public IHttpActionResult Post([FromBody] SellingTransactionModel saleInfo)
        {
            SellingTransactionData data = new SellingTransactionData();

            data.SaveSale(saleInfo);

            return(Ok());
        }
        /// <summary>
        /// Saves selling transaction to the database
        /// </summary>
        public void SaveSale(SellingTransactionModel saleInfo)
        {
            SellingTransactionMasterDBModel masterSaleData = new SellingTransactionMasterDBModel
            {
                SellingTransactionTypeId = saleInfo.SellingTransactionTypeId,
                TransactionTiming        = DateTime.Now,
                Subtotal = saleInfo.Subtotal,
                calculatedTaxesPercentage     = saleInfo.CalculatedTaxesPercentage,
                calculatedTaxesValue          = saleInfo.CalculatedTaxesValue,
                calculatedDiscountPercentage  = saleInfo.CalculatedDiscountPercentage,
                calculatedDiscountValue       = saleInfo.CalculatedDiscountValue,
                TaxesPercentageOverInvoice    = saleInfo.TaxesPercentageOverInvoice,
                TaxesValueOverInvoice         = saleInfo.TaxesValueOverInvoice,
                DiscountPercentageOverInvoice = saleInfo.DiscountPercentageOverInvoice,
                DiscountValueOverInvoice      = saleInfo.DiscountValueOverInvoice,
                Total          = saleInfo.Total,
                SellerId       = saleInfo.SellerId,
                ShiftOwnerId   = saleInfo.ShiftOwnerId,
                CustomerId     = saleInfo.CustomerId,
                NumberOfItems  = saleInfo.NumberOfItems,
                NumberOfPieces = saleInfo.NumberOfPieces
            };



            using (SqlDataAccess sql = new SqlDataAccess())
            {
                try
                {
                    sql.StartTransaction("GaroshaPrimoData");

                    //save the sale model
                    sql.SaveDataInTransaction("dbo.spSellingTransactionMaster_Insert", masterSaleData);

                    //get the id of the transaction
                    masterSaleData.TransactionId = sql.LoadDataInTransaction <int, dynamic>("dbo.spSellingTransactionMaster_GetId",
                                                                                            new { masterSaleData.SellerId, masterSaleData.TransactionTiming }).FirstOrDefault();


                    if (saleInfo.InvoicePayment.cash > 0)
                    {
                        CashPaymentDBModel cashPayment = new CashPaymentDBModel
                        {
                            SellingTransactionId = masterSaleData.TransactionId,
                            Amount = saleInfo.InvoicePayment.cash
                        };

                        sql.SaveDataInTransaction("dbo.spCashPayments_Insert", cashPayment);
                    }

                    if (saleInfo.InvoicePayment.bankCardsPayments.Length > 0)
                    {
                        for (int i = 0; i < saleInfo.InvoicePayment.bankCardsPayments.Length; i++)
                        {
                            saleInfo.InvoicePayment.bankCardsPayments[i].SellingTransactionId = masterSaleData.TransactionId;
                            sql.SaveDataInTransaction("dbo.spBankCardsPayments_Insert",
                                                      saleInfo.InvoicePayment.bankCardsPayments[i]);
                        }
                    }

                    if (saleInfo.InvoicePayment.contractorsPayments.Length > 0)
                    {
                        for (int i = 0; i < saleInfo.InvoicePayment.contractorsPayments.Length; i++)
                        {
                            saleInfo.InvoicePayment.contractorsPayments[i].SellingTransactionId = masterSaleData.TransactionId;
                            sql.SaveDataInTransaction("dbo.spContractorsPayments_Insert",
                                                      saleInfo.InvoicePayment.contractorsPayments[i]);
                        }
                    }

                    foreach (var item in saleInfo.SaleItems)
                    {
                        SellingTransactionItemDBModel saleItem = new SellingTransactionItemDBModel
                        {
                            SellingTransactionId = masterSaleData.TransactionId,
                            ItemId         = item.ItemId,
                            ItemExpiryDate = item.ItemExpiryDate,
                            SellingTransactionItemQuantity = item.SellingTransactionItemQuantity,
                            ItemSellingPrice = item.ItemSellingPrice,
                            ItemSubtotal     = item.ItemSubtotal,
                            ItemSellingDiscountPercentage = item.ItemSellingDiscountPercentage,
                            ItemSellingDiscountValue      = item.ItemSellingDiscountValue,
                            ItemSellingTaxesPercentage    = item.ItemSellingTaxesPercentage,
                            ItemSellingTaxesValue         = item.ItemSellingTaxesValue,
                            ItemTotal         = item.ItemTotal,
                            ItemCostOnSelling = item.ItemCostOnSelling
                        };

                        sql.SaveDataInTransaction("dbo.spSellingTransactionsItems_Insert", saleItem);

                        UpdateQuantitiesOnSelling(item, sql);
                    }

                    sql.CommitTransaction();
                }
                catch
                {
                    sql.RollBackTransaction();
                    throw;
                }
            }
        }