<commit_before>module C80MapFloors
  # noinspection RubyResolve
  class AjaxController < ApplicationController

    def map_edit_buttons
      # puts "<AjaxController.map_edit_buttons> #{params}"
    end

    # прислать ВСЕ Площади указанного Этажа
    def fetch_unlinked_areas
      Rails.logger.debug "[TRACE] <AjaxController.fetch_unlinked_areas> params = #{params}"
      # <AjaxController.fetch_unlinked_areas> params = {"sfloor_id"=>"1", "controller"=>"c80_map_floors/ajax", "action"=>"fetch_unlinked_areas"}

      # Sfloor - принадлежит моделям host-проекта (в частности, stroy101km)
      # noinspection RubyResolve
      @sfloor_areas = Sfloor.find(params[:sfloor_id].to_i).areas
      Rails.logger.debug "[TRACE] <AjaxController.fetch_unlinked_areas> @sfloor_areas.count = #{@sfloor_areas.count}"

    end

    # js-кнопка "связать полигон с этажом" запрашивает список несвязанных с полигонами Этажи (указанного здания)
    def fetch_unlinked_floors
      Rails.logger.debug "[TRACE] <AjaxController.fetch_unlinked_floors> params = #{params}"
      # [TRACE] <AjaxController.fetch_unlinked_floors> params = {"building_id"=>"1", "controller"=>"c80_map_floors/ajax", "action"=>"fetch_unlinked_floors"}

      # меняем логику - делаем менее строгой, теперь присылаются ВСЕ этажи указанного Здания
      # @unlinked_floors = Sfloor.unlinked_floors(params[:building_id]) # Sfloor - Этаж из host app, который еще и floor_representator

      # Building - принадлежит моделям host-проекта (в частности, stroy101km)
      # noinspection RubyResolve
      @building_sfloors = Building.find(params[:building_id].to_i).sfloors

    end

    def fetch_unlinked_buildings
      Rails.logger.debug "[TRACE] <AjaxController.fetch_unlinked_buildings> params = #{params}"

      @unlinked_buildings = Building.all.order_title

    end

    # связать Rent::Area и Map::Area
    # в процессе произойдёт обновление json-файла с данными
    # noinspection RubyResolve
    def link_area
      Rails.logger.debug "[TRACE] <AjaxController.link_area> params = #{params}"
      # [TRACE] <AjaxController.link_area> params = {"area_id"=>"364", "apolygon_id"=>"3", "controller"=>"c80_map_floors/ajax", "action"=>"link_area"}

      # фиксируем участников
      rent_area = ::Area.find(params[:area_id])
      area = C80MapFloors::Area.find(params[:apolygon_id])

      # rent_area has_one area(полигон)
      rent_area.area.delete_all if rent_area.area.present?
      rent_area.area = area
      rent_area.save

      result = {
          updated_locations_json: C80MapFloors::MapJson.fetch_json
      }

      respond_to do |format|
        format.json { render json: result }
      end

    end

    #
    # noinspection RubyResolve
    def link_building

      Rails.logger.debug "[TRACE] <AjaxController.link_building> params = #{params}"
      # [TRACE] <AjaxController.link_building> params = {"rent_building_id"=>"29", "map_building_id"=>"10", "controller"=>"c80_map_floors/ajax", "action"=>"link_building"}
      rent_building = ::Building.find(params[:building_id])

      map_building = C80MapFloors::MapBuilding.find(params[:map_building_id])

      rent_building.map_building.delete_all if rent_building.map_building.present?
      rent_building.map_building = map_building
      rent_building.save

      result = {
          updated_locations_json: C80MapFloors::MapJson.fetch_json
      }

      respond_to do |format|
        format.json { render json: result }
      end

    end

    # связать Этаж и Картинку Этажа (обновится JSON карты)
    def link_floor
      Rails.logger.debug "[TRACE] <AjaxController.link_floor> params = #{params}"
      # <AjaxController.link_floor> params = {"sfloor_id"=>"3", "floor_id"=>"2", "controller"=>"c80_map_floors/ajax", "action"=>"link_floor"}

      # фиксируем участников
      sfloor = Sfloor.find(params[:sfloor_id])
      floor = C80MapFloors::Floor.find(params[:floor_id])

      # sfloor has_one floor
      sfloor.floor.delete_all if sfloor.floor.present?
      sfloor.floor = floor
      sfloor.save

      result = {
          updated_locations_json: C80MapFloors::MapJson.fetch_json
      }

      respond_to do |format|
        format.json { render json: result }
      end

    end

    # от js пришла строка с названием категории. Необходимо найти магазины, соответствующие этой категории.
    def find_shops
      Rails.logger.debug "[TRACE] <AjaxController.find_shops> params = #{params}"
      # [TRACE] <AjaxController.find_shops> params = {"stext"=>"Товары для отдыха", "controller"=>"c80_map_floors/ajax", "action"=>"find_shops"}

      # ПЕРВЫЙ ВАРИАНТ
      # result = {
      #     buildings: [
      #         {   id: 7,
      #             floors: [
      #                 {  id: 2,
      #                    areas: [3]
      #                 }
      #             ]
      #         },
      #         {
      #             id: 10,
      #             floors: [
      #                 { id: 6,
      #                   areas: [5,8]
      #                 },
      #                 { id: 48,
      #                   areas: [6]
      #                 }
      #             ]
      #         }
      #     ]
      # }

      result = {
          buildings: [7,10],
          buildings_shops_count: [3,12],
          floors: [2,6,48],
          floors_shops_count: [2,1,33],
          areas: [3,5,8,6],
          areas_shops: [
                           {:id=>114, :title=> 'ООО <NAME>', :desc=> '', :tel=> '(960) 520 04 25 (48439) 9 36 76', :site=> '', :url=> '/shops/ooo-dom-domych.html'},
                           {:id=>306, :title=>"ООО \"<NAME>\"", :desc=>"<p>Компания &quot;<NAME>&quot; - это комфорт вашего дома. Наши специалисты готовы решить ваши проблемы, связанные с комплектацией ,проектированием и монтажом современного оборудования для отопления ,водоснабжения, водоподготовки, индивидуальной канализации, кондиционирования и вентиляции здания.</p>\r\n", :tel=> '8(484) 39-961-39, 8(910) 914-21-79', :site=> 'http://www.pogodavdome.com', :url=> '/shops/ooo-mir-klimata.html'},
                           {:id=>124, :title=> 'ИП Исаенко', :desc=> '', :tel=> '(906) 640-79-00', :site=> '', :url=> '/shops/ip-dorohova.html'},
                           {:id=>115, :title=> 'ООО Аэробус', :desc=> '', :tel=> '(961) 111 12 25', :site=> '', :url=> '/shops/ooo-dom-domych.html'}
          ]
      }

      respond_to do |format|<commit_msg>develop_search: ajax_controller: убрал ненужный areas_shops из результатов поиска.<commit_after>module C80MapFloors
  # noinspection RubyResolve
  class AjaxController < ApplicationController

    def map_edit_buttons
      # puts "<AjaxController.map_edit_buttons> #{params}"
    end

    # прислать ВСЕ Площади указанного Этажа
    def fetch_unlinked_areas
      Rails.logger.debug "[TRACE] <AjaxController.fetch_unlinked_areas> params = #{params}"
      # <AjaxController.fetch_unlinked_areas> params = {"sfloor_id"=>"1", "controller"=>"c80_map_floors/ajax", "action"=>"fetch_unlinked_areas"}

      # Sfloor - принадлежит моделям host-проекта (в частности, stroy101km)
      # noinspection RubyResolve
      @sfloor_areas = Sfloor.find(params[:sfloor_id].to_i).areas
      Rails.logger.debug "[TRACE] <AjaxController.fetch_unlinked_areas> @sfloor_areas.count = #{@sfloor_areas.count}"

    end

    # js-кнопка "связать полигон с этажом" запрашивает список несвязанных с полигонами Этажи (указанного здания)
    def fetch_unlinked_floors
      Rails.logger.debug "[TRACE] <AjaxController.fetch_unlinked_floors> params = #{params}"
      # [TRACE] <AjaxController.fetch_unlinked_floors> params = {"building_id"=>"1", "controller"=>"c80_map_floors/ajax", "action"=>"fetch_unlinked_floors"}

      # меняем логику - делаем менее строгой, теперь присылаются ВСЕ этажи указанного Здания
      # @unlinked_floors = Sfloor.unlinked_floors(params[:building_id]) # Sfloor - Этаж из host app, который еще и floor_representator

      # Building - принадлежит моделям host-проекта (в частности, stroy101km)
      # noinspection RubyResolve
      @building_sfloors = Building.find(params[:building_id].to_i).sfloors

    end

    def fetch_unlinked_buildings
      Rails.logger.debug "[TRACE] <AjaxController.fetch_unlinked_buildings> params = #{params}"

      @unlinked_buildings = Building.all.order_title

    end

    # связать Rent::Area и Map::Area
    # в процессе произойдёт обновление json-файла с данными
    # noinspection RubyResolve
    def link_area
      Rails.logger.debug "[TRACE] <AjaxController.link_area> params = #{params}"
      # [TRACE] <AjaxController.link_area> params = {"area_id"=>"364", "apolygon_id"=>"3", "controller"=>"c80_map_floors/ajax", "action"=>"link_area"}

      # фиксируем участников
      rent_area = ::Area.find(params[:area_id])
      area = C80MapFloors::Area.find(params[:apolygon_id])

      # rent_area has_one area(полигон)
      rent_area.area.delete_all if rent_area.area.present?
      rent_area.area = area
      rent_area.save

      result = {
          updated_locations_json: C80MapFloors::MapJson.fetch_json
      }

      respond_to do |format|
        format.json { render json: result }
      end

    end

    #
    # noinspection RubyResolve
    def link_building

      Rails.logger.debug "[TRACE] <AjaxController.link_building> params = #{params}"
      # [TRACE] <AjaxController.link_building> params = {"rent_building_id"=>"29", "map_building_id"=>"10", "controller"=>"c80_map_floors/ajax", "action"=>"link_building"}
      rent_building = ::Building.find(params[:building_id])

      map_building = C80MapFloors::MapBuilding.find(params[:map_building_id])

      rent_building.map_building.delete_all if rent_building.map_building.present?
      rent_building.map_building = map_building
      rent_building.save

      result = {
          updated_locations_json: C80MapFloors::MapJson.fetch_json
      }

      respond_to do |format|
        format.json { render json: result }
      end

    end

    # связать Этаж и Картинку Этажа (обновится JSON карты)
    def link_floor
      Rails.logger.debug "[TRACE] <AjaxController.link_floor> params = #{params}"
      # <AjaxController.link_floor> params = {"sfloor_id"=>"3", "floor_id"=>"2", "controller"=>"c80_map_floors/ajax", "action"=>"link_floor"}

      # фиксируем участников
      sfloor = Sfloor.find(params[:sfloor_id])
      floor = C80MapFloors::Floor.find(params[:floor_id])

      # sfloor has_one floor
      sfloor.floor.delete_all if sfloor.floor.present?
      sfloor.floor = floor
      sfloor.save

      result = {
          updated_locations_json: C80MapFloors::MapJson.fetch_json
      }

      respond_to do |format|
        format.json { render json: result }
      end

    end

    # от js пришла строка с названием категории. Необходимо найти магазины, соответствующие этой категории.
    def find_shops
      Rails.logger.debug "[TRACE] <AjaxController.find_shops> params = #{params}"
      # [TRACE] <AjaxController.find_shops> params = {"stext"=>"Товары для отдыха", "controller"=>"c80_map_floors/ajax", "action"=>"find_shops"}

      # ПЕРВЫЙ ВАРИАНТ
      # result = {
      #     buildings: [
      #         {   id: 7,
      #             floors: [
      #                 {  id: 2,
      #                    areas: [3]
      #                 }
      #             ]
      #         },
      #         {
      #             id: 10,
      #             floors: [
      #                 { id: 6,
      #                   areas: [5,8]
      #                 },
      #                 { id: 48,
      #                   areas: [6]
      #                 }
      #             ]
      #         }
      #     ]
      # }

      result = {
          buildings: [7,10],
          buildings_shops_count: [3,12],
          floors: [2,6,48],
          floors_shops_count: [2,1,33],
          areas: [3,5,8,6]
      }

      respond_to do |format|
{'fraction_non_alphanumeric': 0.12233417296389588, 'fraction_numerical': 0.018471872376154493, 'mean_word_length': 2.632509911558402, 'pattern_counts': {'":': 0, '<': 40, '<?xml version=': 0, '>': 104, 'https://': 0, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1209423', 'n_tokens_mistral': 4283, 'n_tokens_neox': 4272, 'n_words': 732}