class GalleriesController < ApplicationController
  before_action :set_gallery, only: [:show, :edit, :update, :destroy]

  # GET /galleries
  # GET /galleries.json
  def index
    @galleries = Gallery.all
    @services = Service.all
  end

  # GET /galleries/1
  # GET /galleries/1.json
  def show
    @gallery_images = @gallery.gallery_images.all.order(:order)
  end

  # GET /galleries/new
  def new
    @gallery = Gallery.new
    @gallery_image = @gallery.gallery_images.build
  end

  # GET /galleries/1/edit
  def edit
    @gallery_images = @gallery.gallery_images.all.order(:order)
    @gallery_image = @gallery.gallery_images.new
  end

  # POST /galleries
  # POST /galleries.json
  def create
    @gallery = Gallery.new(gallery_params)

    respond_to do |format|
      if @gallery.save
        unless params[:gallery_images].blank?
          params[:gallery_images]['image'].each do |i|
            @gallery_image = @gallery.gallery_images.create!(:image => i)
          end
        end
        format.html { redirect_to @gallery, flash: { success: 'Создано успешно.'} }
        format.json { render :show, status: :created, location: @gallery }
      else
        format.html { render :new }
        format.json { render json: @gallery.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /galleries/1
  # PATCH/PUT /galleries/1.json
  def update
    respond_to do |format|
      if @gallery.update(gallery_params)
        # remove empty images
        if !@gallery.gallery_images.blank? && @gallery.gallery_images.last.image
          @gallery.gallery_images.each { |i| i.delete if i.image.blank? }
        end
        # add new images
        unless params[:gallery_images].blank?
          params[:gallery_images]['image'].each do |i|
            @gallery_image = @gallery.gallery_images.create!(:image => i)
          end
        end
        #update


        format.html { redirect_to @gallery, flash: { success: 'Описание обновлено.'} }
        format.json { render :show, status: :ok, location: @gallery }
      else
        format.html { render :edit }
        format.json { render json: @gallery.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /galleries/1
  # DELETE /galleries/1.json
  def destroy
    @gallery.destroy
    respond_to do |format|
      format.html { redirect_to galleries_url, flash: { success: 'Удалено успешно.'}  }
      format.json { head :no_content }
    end
  end

  private
    # Use callbacks to share common setup or constraints between actions.
    def set_gallery
      @gallery = Gallery.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def gallery_params
      params.require(:gallery).permit(:name, :description, :service_id, gallery_images_attributes: [:id, :gallery_id, :image, :name, :order])
    end
end
