97 lines
2.9 KiB
Ruby
97 lines
2.9 KiB
Ruby
module PsAdmin
|
|
# Images controller
|
|
class ImageController < ApplicationController
|
|
before_action :authenticate_admin!
|
|
layout 'admin'
|
|
|
|
def index; end
|
|
|
|
def create
|
|
@product = Product.where(id: params[:product_id]).first
|
|
return if @product.blank?
|
|
return if params[:images].blank?
|
|
params[:images].each do |image|
|
|
if @product.images.blank?
|
|
@product.images.create(image: image, updated_by: current_admin.id,
|
|
position: @product.images.size + 1,
|
|
cover: true)
|
|
else
|
|
@product.images.create(image: image, updated_by: current_admin.id,
|
|
position: @product.images.size + 1)
|
|
end
|
|
end
|
|
end
|
|
|
|
def set_cover
|
|
@image = Image.where(id: params[:id]).first
|
|
unless @image.blank?
|
|
@image.cover = true
|
|
@image.save
|
|
Image.where('imageable_type = ? AND imageable_id = ? AND id != ?',
|
|
@image.imageable_type, @image.imageable_id, @image.id)
|
|
.update_all(cover: false)
|
|
end
|
|
@product = Product.where(id: params[:product_id]).first
|
|
end
|
|
|
|
def set_active
|
|
if !params[:id].blank? && !params[:active].blank?
|
|
@image = Image.where(id: params[:id]).first
|
|
unless @image.blank?
|
|
@image.active = params[:active].to_i
|
|
@image.save
|
|
unless params[:product_id].blank?
|
|
@product = Product.where(id: params[:product_id]).first
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
def pos_up
|
|
im_this = Image.find(params[:id])
|
|
im_this_pos = im_this.position
|
|
im_last =
|
|
Image.by_image_type(im_this.imageable_type)
|
|
.where('imageable_id = ? AND position < ?', im_this.imageable_id,
|
|
im_this_pos)
|
|
.by_position_desc.first
|
|
im_this.position = im_last.position
|
|
im_this.save
|
|
im_last.position = im_this_pos
|
|
im_last.save
|
|
@product = im_this.imageable
|
|
end
|
|
|
|
def pos_down
|
|
im_this = Image.find(params[:id])
|
|
im_this_pos = im_this.position
|
|
im_last =
|
|
Image.by_image_type(im_this.imageable_type)
|
|
.where('imageable_id = ? AND position > ?', im_this.imageable_id,
|
|
im_this_pos).by_position_asc.first
|
|
im_this.position = im_last.position
|
|
im_this.save
|
|
im_last.position = im_this_pos
|
|
im_last.save
|
|
@product = im_this.imageable
|
|
end
|
|
|
|
def destroy
|
|
image = Image.where(id: params[:id]).first
|
|
unless image.blank?
|
|
if image.cover.eql?(true)
|
|
img = Image.by_image_type(image.imageable_type)
|
|
.where('imageable_id = ? AND id != ?',
|
|
image.imageable_id, image.id).first
|
|
unless img.blank?
|
|
img.cover = true
|
|
img.save
|
|
end
|
|
end
|
|
image.destroy
|
|
end
|
|
@product = Product.where(id: params[:product_id]).first
|
|
end
|
|
end
|
|
end
|