diff --git a/app/controllers/batch_line_items_controller.rb b/app/controllers/batch_line_items_controller.rb index 7333b8b..a8253d2 100644 --- a/app/controllers/batch_line_items_controller.rb +++ b/app/controllers/batch_line_items_controller.rb @@ -2,7 +2,7 @@ class BatchLineItemsController < ApplicationController require "csv" skip_before_filter :verify_authenticity_token before_action :authenticate_member! - + require 'digest/md5' def index # user_id=current_member.user_id @@ -99,13 +99,13 @@ class BatchLineItemsController < ApplicationController @batchLineItems = BatchLineItem.joins('inner join '+sub_query +" as batches on batches.id=batch_line_items.batch_id") .joins('inner join product_categories product on product.id=batches.product_category_id') .where('batch_id in (?)',batch_list) - .select("*,product.product_type_id ,product.name,'' as secret_token,'' as location") + .select("*,product.product_type_id ,product.name,'' as secret_token,'' as location_name") else Batch.where("client_id=? ",client_id).update_all("export_count = export_count + 1,exported_by='"+exported_by+"'") sub_query="(select * from batches where client_id ="+client_id+" and product_category_id="+ product_category_id+")" @batchLineItems = BatchLineItem.joins('inner join '+sub_query+' as batches on batches.id=batch_line_items.batch_id') .joins('inner join product_categories as product on product.id=batches.product_category_id') - .select("*,product.product_type_id ,product.name,'' as secret_token,'' as location") + .select("*,product.product_type_id ,product.name,'' as secret_token,'' as location_name") end datestr= Time.now.strftime("%Y/%m/%d %H:%M:%S") @@ -115,4 +115,71 @@ class BatchLineItemsController < ApplicationController format.csv { send_data @batchLineItems.to_csv(client_id,location_code), filename: "#{filename}.csv" } end end + + def generate_cards + end + + def generate_card_account_items + # Generate Code + batch_id=params[:id] + client_id="" + qty = params[:qty] + total_count=0 + + # check_member= Member.authenticate_session_token(session_token) + # if !check_member.nil? + encrypt_key="" + asset_identity="" + + find_batch = Batch.find_by_id(batch_id) + if !find_batch.nil? + puts 'hkjfklasj' + card_type=find_batch.adult_or_child.upcase + product_category_id=find_batch.product_category_id + find_product_category=ProductCategory.find_by_id(product_category_id) + + if !find_product_category.nil? + product_type=find_product_category.product_type_id + + find_user=Client.find_by_id(find_batch.client_id) + if !find_user.nil? + encrypt_key=find_user.secrect_key + location_code=find_user.location_code + + client_id=find_user.id + if !encrypt_key.nil? + # Generate with qty + qty.to_i.times do |i| + serial_no=BatchLineItem.generate_serial_no(client_id.to_s) + + asset_identity=BatchLineItem.generate_account_no(location_code) + security_code=BatchLineItem.generate_security_code + out=BatchLineItem.create_product(asset_identity,serial_no,batch_id,"","",security_code) + total_count+=1 + end + respond_to do |format| + format.html { redirect_to batch_url(batch_id), notice: 'Successfully generated.' } + format.json { head :no_content } + end + # Generate with qty + + else + @out=false,'Invalid User!' + end + else + @out=false,"Client doesn't exist!" + end + else + @out=false,"Product Category doesn't exist!" + end + else + @out=false,"Batch doesn't exist!" + end + # else + # @out=false,'Sorry!Unauthorized user!' + # end + # Generate Code + + + end end \ No newline at end of file diff --git a/app/controllers/batches_controller.rb b/app/controllers/batches_controller.rb index 198bd66..4ea6a0f 100644 --- a/app/controllers/batches_controller.rb +++ b/app/controllers/batches_controller.rb @@ -1,17 +1,75 @@ class BatchesController < ApplicationController skip_before_filter :verify_authenticity_token - before_action :authenticate_member! + # before_action :authenticate_member! + before_action :set_batch,:authenticate_member!, only: [:show, :edit, :update, :destroy] def index @product_category_id="" @clients=Client.all.order('id desc') @product_categories=ProductCategory.all.order('id desc') @batches=Batch.joins('inner join users on users.id=batches.user_id') .select('batches.*,users.name as user_name').order('batches.id desc').page(params[:page]) - @count = Batch.joins('inner join users on users.id=batches.user_id') + @count = Batch.joins('inner join users on users.id=batches.user_id') .select('batches.*').count end + def show + @batchLineItems=BatchLineItem.where("batch_id=?",params[:id]).page(params[:page]).per(10) + @result_count= @batchLineItems.total_count + end + + + def new + @batch = Batch.new + end + + def edit + end + + + def create + date = DateTime.now.beginning_of_day.utc.to_time.strftime("%Y-%m-%d") + order_ref = params[:batch][:order_ref] + puts order_ref + adult_or_child=params[:adult_or_child] + client_id=params[:client_id] + product_category_id=params[:product_category_id] + @batch = Batch.create_batch(date,order_ref,2,"adult_or_child",6,3) + puts @batch.order_ref + + respond_to do |format| + if @batch.save + format.html { redirect_to @batch, notice: 'Batch was successfully created.' } + format.json { render :show, status: :created, location: @batch } + else + format.html { render :new } + format.json { render json: @batch.errors, status: :unprocessable_entity } + end + end + end + + + def update + + respond_to do |format| + if @batch.update(batch_params) + format.html { redirect_to @batch, notice: 'Batch was successfully updated.' } + format.json { render :show, status: :ok, location: @batch } + else + format.html { render :edit } + format.json { render json: @batch.errors, status: :unprocessable_entity } + end + end + end + + def destroy + @batch.destroy + respond_to do |format| + format.html { redirect_to batches_url, notice: 'Batch was successfully destroyed.' } + format.json { head :no_content } + end + end + def search client_id=params[:client_id] product_category_id=params[:product_category_id] @@ -51,4 +109,14 @@ class BatchesController < ApplicationController end end + private + # Use callbacks to share common setup or constraints between actions. + def set_batch + @batch = Batch.find(params[:id]) + end + + # Never trust parameters from the scary internet, only allow the white list through. + def batch_params + params.require(:batch).permit(:date,:user_id, :client_id, :order_ref,:batch_start,:batch_end,:exported_by,:qty_processing,:qty_success,:qty_fail,:batch_start_time,:batch_end_time,:export_count,:remark,:adult_or_child,:product_category_id) + end end \ No newline at end of file diff --git a/app/models/batch.rb b/app/models/batch.rb index 61da858..3123db7 100644 --- a/app/models/batch.rb +++ b/app/models/batch.rb @@ -1,5 +1,8 @@ class Batch < ApplicationRecord has_many :batch_line_item + belongs_to :client + belongs_to :product_category + belongs_to :user def self.create_batch(date,order_ref,user_id,adult_or_child,client_id,product_category_id) batch = Batch.new diff --git a/app/models/batch_line_item.rb b/app/models/batch_line_item.rb index d3bd64a..dac29e5 100644 --- a/app/models/batch_line_item.rb +++ b/app/models/batch_line_item.rb @@ -3,6 +3,7 @@ class BatchLineItem < ApplicationRecord attr_accessor :secret_token attr_accessor :location attr_accessor :product_type + require 'digest/md5' def self.generate_account_no(location_code) super_merchant = "101" @@ -21,6 +22,18 @@ class BatchLineItem < ApplicationRecord end return account_no end + def self.generate_security_code + + o = [('0'..'8')].map { |i| i.to_a }.flatten + security_code = (0...8).map { o[rand(o.length)] }.join + + find_account_no = BatchLineItem.find_by_security_code(security_code) + if !find_account_no.nil? + o = [('0'..'8')].map { |i| i.to_a }.flatten + security_code = (0...8).map { o[rand(o.length)] }.join + end + return security_code + end def self.generate_serial_no(client_id) find_lookup=Lookup.find_by_name('generate_serial_no') if !find_lookup.nil? @@ -54,16 +67,22 @@ class BatchLineItem < ApplicationRecord if !find_client.nil? encrypt_key=find_client.secrect_key end - attributes = %w{serial_no asset_identity batch_id manufacture_uid asset_type secret_token location} + attributes = %w{serial_no asset_identity batch_id manufacture_uid asset_type secret_token location security_code} CSV.generate(headers: true) do |csv| csv << attributes all.each do |encoder| - if encoder.product_type_id ==1 + if encoder.product_type_id ==1 + str="account_no="+encoder.asset_identity.to_s+"&manufacture_uid="+encoder.manufacture_uid.to_s+"&serial_no="+encoder.serial_no.to_s else str="manufacture_uid="+encoder.manufacture_uid.to_s+"&serial_no="+encoder.serial_no.to_s end + security_code = encoder.security_code + digest = Digest::MD5.hexdigest(security_code) + puts 'digest............' + puts digest + encryptd_data=BatchLineItem.encrypted(str,encrypt_key) encoder.secret_token=encryptd_data encoder.location=location_code @@ -89,7 +108,7 @@ class BatchLineItem < ApplicationRecord return encrypted end - def self.create_product(asset_identity,serial_no,batch_id,manufacture_uid,card_type) + def self.create_product(asset_identity,serial_no,batch_id,manufacture_uid,card_type,security_code=nil) batchLineItem=BatchLineItem.new batchLineItem.asset_identity=asset_identity batchLineItem.serial_no=serial_no @@ -98,7 +117,10 @@ class BatchLineItem < ApplicationRecord batchLineItem.asset_type = card_type batchLineItem.encoded_at = DateTime.now.beginning_of_day.utc.to_time.strftime("%Y-%m-%d") batchLineItem.verified_at =DateTime.now.beginning_of_day.utc.to_time.strftime("%Y-%m-%d") - + if !security_code.nil? + batchLineItem.security_code = security_code + puts 'security_code;fksdfklsdjfklsdfklsdjfklsdjfklsdjflskd' + end batch=Batch.find_by_id(batch_id) if batchLineItem.save diff --git a/app/views/.DS_Store b/app/views/.DS_Store index b617d82..cc360ab 100644 Binary files a/app/views/.DS_Store and b/app/views/.DS_Store differ diff --git a/app/views/batches/index.html.erb b/app/views/batches/index.html.erb index 5faa33f..bb839c4 100644 --- a/app/views/batches/index.html.erb +++ b/app/views/batches/index.html.erb @@ -4,6 +4,11 @@ Batches +