# -*- encoding : utf-8 -*-

class Admin::BuyListsController < ApplicationController
  layout "admin"
  before_action :auth_admin

  def index
    
    @p_customer_sheets = PCustomerSheet.all
    
    @p_customer_sheets = @p_customer_sheets.where(:state => ["AV BPA", "PAS BPA", "BPA"])
    
    @price_line_blocks = PriceLineBlock.where(:price_lineable_type => "PCustomerSheet", :price_lineable_id => @p_customer_sheets.ids)
    
    @price_lines = PriceLine.where(:price_line_block_id => @price_line_blocks.ids)
    
    if params[:search][:s_brand].present? && params[:search][:s_brand] != ""
      @price_lines = @price_lines.joins(p_product_ref: :p_product).where("s_brand_id = ?", params[:search][:s_brand])
    end

    if params[:search][:state].present? && params[:search][:state] != ""
      @p_customer_sheets = @p_customer_sheets.where(:state => params[:search][:state])
      @price_line_blocks = PriceLineBlock.where(:price_lineable_type => "PCustomerSheet", :price_lineable_id => @p_customer_sheets.ids)
      @price_lines = PriceLine.where(:price_line_block_id => @price_line_blocks.ids)
    end

    if params[:search][:p_customer_code].present?
      @p_customer_sheets = @p_customer_sheets.joins(:p_customer).where("code LIKE ?", params[:search][:p_customer_code])
      @price_line_blocks = PriceLineBlock.where(:price_lineable_type => "PCustomerSheet", :price_lineable_id => @p_customer_sheets.ids)
      @price_lines = PriceLine.where(:price_line_block_id => @price_line_blocks.ids)
    end

    date_regex = /^(0[1-9]|[12][0-9]|3[01])[\/](0[1-9]|1[012])[\/](19|20)\d\d$/i


    params[:start] = Date.today.beginning_of_month.strftime('%d/%m/%Y') if !params[:start]

    if params[:start] and params[:start] =~ date_regex
      #fsfds = sdfsfd
      @start = Date.parse(params[:start]).beginning_of_day
      params[:start]= @start.strftime('%d/%m/%Y')
    else
      @start = nil
    end

    if true
      params[:stop] = Date.today.end_of_month.strftime('%d/%m/%Y') if !params[:stop]


      if params[:stop].to_s != "" # and params[:stop] =~ date_regex
        @stop = Date.parse(params[:stop]).end_of_day

        params[:stop]= @stop.strftime('%d/%m/%Y')


      else
         @stop = nil
      end

    end
    @price_lines = @price_lines.where("price_lines.cc_creation_date >= ?", @start) if @start
    @price_lines = @price_lines.where("price_lines.cc_creation_date <= ?", @stop.end_of_day) if @stop


    respond_to do |format|
      format.html{
    
      }
    end
   
  end

  def show
    @p_customer_sheet = PCustomerSheet.find(params[:id])

  end
  
  

  def new
    
    
		@p_customer_sheet = PCustomerSheet.new()
    
    @p_customer = PCustomer.find(params[:p_customer_id]) if params[:p_customer_id]
    
    @p_customer_sheet.p_customer = @p_customer
    
    @p_customer_sheet.price_line_block = PriceLineBlock.new(:particular_bill_id => @p_customer.particular_bill_id, :particular_send_id => @p_customer.particular_send_id)
    @p_customer_sheet.price_line_block.price_lines.build
    @p_customer_sheet.price_line_block.p_customer = @p_customer
  end

 

  def edit
  
    
    @p_customer_sheet = PCustomerSheet.find(params[:id])
    
    @p_customer = @p_customer_sheet.p_customer
  end

  def create
    @p_customer_sheet = PCustomerSheet.new(params.require(:p_customer_sheet).permit!)
    
    @p_customer_sheet.admin = current_admin
    
    @p_customer = @p_customer_sheet.p_customer

    if @p_customer_sheet.save
     @p_customer_sheets = PCustomerSheet.order(:id).all
      redirect_to admin_p_customer_sheet_path(@p_customer_sheet)
    else
      render action: "new"
 
    end

  end


  def update
    @p_customer_sheet = PCustomerSheet.find(params[:id])
    @p_customer = @p_customer_sheet.p_customer

    
    if @p_customer_sheet.update_attributes(params.require(:p_customer_sheet).permit!)
      
       @p_customer_sheets = PCustomerSheet.order(:id).all
      
       redirect_to admin_p_customer_sheet_path(@p_customer_sheet)
    else
     render action: "edit" 
      
    end
      
  end


  def destroy
    @p_customer_sheet = PCustomerSheet.find(params[:id])
    @p_customer_sheet.destroy
    
    
  end
  
  
  def generate_d
    @p_customer_sheet = PCustomerSheet.find(params[:id])
    @p_customer_sheet.generate_d
    
    redirect_back(fallback_location: admin_p_customer_sheets_path)
    
  end
  
  def generate_fp
    @p_customer_sheet = PCustomerSheet.find(params[:id])
    @p_customer_sheet.generate_fp
    
    redirect_back(fallback_location: admin_p_customer_sheets_path)
    
  end
  
  def generate_bc
    @p_customer_sheet = PCustomerSheet.find(params[:id])
    @p_customer_sheet.generate_bc
    
    redirect_back(fallback_location: admin_p_customer_sheets_path)
    
  end
  
  def generate_bl
    @p_customer_sheet = PCustomerSheet.find(params[:id])
    @p_customer_sheet.generate_bl
    
    redirect_back(fallback_location: admin_p_customer_sheets_path)
    
  end
  
  def generate_f
    @p_customer_sheet = PCustomerSheet.find(params[:id])
    @p_customer_sheet.generate_f
    
    redirect_back(fallback_location: admin_p_customer_sheets_path)
    
  end
  
  def reject
    @p_customer_sheet = PCustomerSheet.find(params[:id])
    @p_customer_sheet.state = "refusée"
    
    @p_customer_sheet.save
    @p_customer_sheet.archive_now if !@p_customer_sheet.archived
    
    redirect_back(fallback_location: admin_p_customer_sheets_path)
    
  end
  
  
  def block_price
    @p_customer_sheet = PCustomerSheet.find(params[:id])
    if @p_customer_sheet.price_blocked
      @p_customer_sheet.unblock_price
    else
      @p_customer_sheet.block_price
    end
    
    redirect_back(fallback_location: admin_p_customer_sheets_path)
    
  end
  
  
  
end
