예제 #1
0
        private bool savePaymentDetails(PaymentNotificationRequestHelper pnr)
        {
            BettingSuiteDataContext db = new BettingSuiteDataContext();

            if (iSNotDuplicate(pnr.getPaymentLogId(), db))
            {
                try
                {
                    using (TransactionScope scope = new TransactionScope())
                    {
                        PaymentNotificationRequest pr = setPaymentRequestObjAndSave(pnr, db);
                        shop shop = new CRUD.shop_crud().find_shop_By_ID(pr.CustReference);
                        foreach (PaymentItemHelper it in pnr.getPaymentItems())
                        {
                            if (it.getItemCode().Equals(ConfigurationManager.AppSettings["SalesCode"].ToString()))
                            {
                                AddSalesTransaction(shop, pr, db);
                            }
                            else if (it.getItemCode().Equals(ConfigurationManager.AppSettings["LEASE DEBT"].ToString()))
                            {
                                //do lease debt lodgement
                            }
                            else if (it.getItemCode().Equals(ConfigurationManager.AppSettings["OPERATIONAL DEBT"].ToString()))
                            {
                                //do operational debt lodgement
                            }
                            else if (it.getItemCode().Equals(ConfigurationManager.AppSettings["ONLINE AGENCY"].ToString()))
                            {
                                //send online dept updates on online agency
                            }
                            else if (it.getItemCode().Equals(ConfigurationManager.AppSettings["ONLINE USER"].ToString()))
                            {
                                //send online dept updates on online user
                            }
                            else if (it.getItemCode().Equals(ConfigurationManager.AppSettings["PAYMENT COMMISION"].ToString()))
                            {
                                //futute implementation
                            }
                            else
                            {
                                //send acknologement message of payments
                            }
                        }

                        db.SubmitChanges();
                        scope.Complete();

                        return(true);
                    }
                }
                catch (Exception)
                {
                    return(false);
                }
            }
            else
            {
            }
            return(false);
        }
예제 #2
0
        public List <master_balance_sheet> fillDataToList()
        {
            if (dtExcelRecords == null)
            {
                return(null);
            }
            else
            {
                List <master_balance_sheet> balance = new List <master_balance_sheet>();

                //sho shophelper = new shop_crud();
                //shop shoped;
                foreach (DataRow row in dtExcelRecords.Rows)
                {
                    int rowindex = dtExcelRecords.Rows.IndexOf(row);
                    //if (dtExcelRecords.Rows.IndexOf(row) == 0)
                    //    continue;
                    //if (dtExcelRecords.Rows.IndexOf(row) == dtExcelRecords.Rows.Count - 1)
                    //    break;
                    //
                    var values = row.ItemArray;
                    master_balance_sheet bal;

                    // shop = new shop { id = -1, shop_code = (string)values[1] };// new shop_crud().find_shop_By_Code((string)values[1]) != null ? shophelper.find_shop_By_Code((string)values[1]) : new shop {id=-1, shop_code=(string) values[1]};
                    try
                    {
                        shop shop = new CRUD.shop_crud().find_shop_By_Code(values[1].ToString());
                        bal = new master_balance_sheet
                        {
                            App_id         = (shop != null)?shop.shop_code :"NO RECORD",
                            sales_balance  = (values[2] != null)?decimal.Parse(values[2].ToString()):0,
                            credit_balance = 0,
                            netbalance     = (values[2] != null) ? decimal.Parse(values[2].ToString()) : 0,
                            online_credit  = 0,
                            shop           = (shop != null)?shop.id: -1
                        };
                        balance.Add(bal);
                    }


                    catch (Exception)
                    {
                    }
                }

                return(balance);
            }
        }
예제 #3
0
 public List <string> getSuspectedNonPayOutShops()
 {
     try
     {
         List <shop>   shops          = new CRUD.shop_crud().getallShop().ToList <shop>();
         List <string> shopstodisplay = new List <string>();
         var           badshops       = db.master_sb_sales.Where(a => a.date >= DateTime.Today.AddDays(-5) && a.date <= DateTime.Today).GroupBy(b => b.shop).Select(s => new { shop = s.Key, sum = s.Sum(y => y.winnings), sale = s.Sum(y => y.winnings) }).Where(e => e.sale > 10000);
         foreach (var t in badshops)
         {
             shopstodisplay.Add(shops.SingleOrDefault(a => a.id == t.shop.Value).shop_code);
         }
         return(shopstodisplay);
     }
     catch (Exception)
     {
         return(new List <string>());
     }
 }
예제 #4
0
        public List <master_sb_sale> fillSBDataToList(DateTime date)
        {
            List <shop> shops = new CRUD.shop_crud().getallShop().ToList <shop>();

            if (dtExcelRecords == null)
            {
                return(null);
            }
            else
            {
                List <master_sb_sale> sales = new List <master_sb_sale>();

                shop_crud shophelper = new shop_crud();
                //shop shoped;
                foreach (DataRow row in dtExcelRecords.Rows)
                {
                    int rowindex = dtExcelRecords.Rows.IndexOf(row);
                    //if(dtExcelRecords.Rows.IndexOf(row) == 0)
                    //    continue;
                    if (dtExcelRecords.Rows.IndexOf(row) == dtExcelRecords.Rows.Count - 1)
                    {
                        break;
                    }
                    //
                    var            values = row.ItemArray;
                    master_sb_sale sale;
                    string         excelshopcode = (string)values[1];
                    shop           shoped        = shops.SingleOrDefault(a => a.shop_code == excelshopcode);// new shop_crud().find_shop_By_Code((string)values[1]) != null ? shophelper.find_shop_By_Code((string)values[1]) : new shop {id=-1, shop_code=(string) values[1]};
                    try
                    {
                        sale = new master_sb_sale
                        {
                            // shop1 = (shop_ != null) ? shop_ : null,
                            //((shophelper.find_shop_By_Code((string)values[1])) != null) ? shophelper.find_shop_By_Code((string)values[1]) : null,
                            //(string)values[1]) != null) ? shophelper.find_shop_By_Code((string)values[1]) : null,
                            shop1 = (shoped != null) ? shoped : new shop {
                                shop_code = values[1].ToString(), app_id = values[1].ToString()
                            },
                            // shop = shoped.id,//shoped.id,
                            //app_id = values[1].ToString(),//temp string used to display shop in list view
                            date               = date,
                            stake              = Decimal.Parse(values[5].ToString()),
                            winnings           = Decimal.Parse(values[7].ToString()),
                            cancelled          = Decimal.Parse(values[10].ToString()),
                            single_stake_sales = Decimal.Parse(values[16].ToString()),
                            isverified         = false,
                            islocked           = false,
                            date_posted        = DateTime.Today,
                        };

                        // sale.shop1 = ((shophelper.find_shop_By_Code((string)values[1])) != null) ? shophelper.find_shop_By_Code((string)values[1]) : null;

                        sale.sales   = Decimal.Subtract((Decimal)sale.stake, (Decimal)sale.cancelled);
                        sale.balance = Decimal.Subtract((Decimal)sale.sales, (Decimal)sale.winnings);
                        sale.other_stake_commision  = Decimal.Multiply((Decimal)(sale.sales - sale.single_stake_sales), (shoped.commission != null) ? shoped.commission.Value / 100 : Utilities.COMMISSION.COMMISSION_CONSTANT / 100);
                        sale.single_stake_commision = Decimal.Multiply((Decimal)sale.single_stake_sales, Utilities.COMMISSION.SINGLE_COMMISION_CONSTANT / 100);
                        sale.commision = sale.single_stake_commision + sale.other_stake_commision;
                        //sale.commision = Decimal.Multiply((Decimal)sale.sales, (shoped.commission != null) ? shoped.commission.Value / 100 : Utilities.COMMISSION.COMMISSION_CONSTANT / 100);
                        sale.net_balance          = Decimal.Subtract((Decimal)sale.balance, (Decimal)sale.commision);
                        sale.single_stake_percent = sale.sales != 0 ? (sale.single_stake_sales / sale.sales) * 100 : 0;
                        //   sale = new master_sb_sales_crud(sale).insert_master_sb_sale();
                        if (sale == null)
                        {
                            sale = new master_sb_sale();
                        }
                        sales.Add(sale);
                        //   sale = new master_sb_sales_crud(sale).insert_master_sb_sale();
                    }


                    catch (Exception)
                    {
                        sale = new master_sb_sale();
                        //  sale.shop1 = new shop { shop_code = values[1].ToString(), app_id = values[1].ToString() };
                        sale.app_id = values[1].ToString();
                        sales.Add(sale);
                    }
                }

                return(sales);
            }
        }
예제 #5
0
        private void AddnewLodgementReimbursementTransaction(shop shop, transaction_category tran, PaymentNotificationRequest pnr, BettingSuiteDataContext db, decimal amount)
        {
            amount = (amount == null) ? pnr.Amount : amount;

            DateTime             date          = DateTime.Today;
            master_balance_sheet masterbalance = new CRUD.master_balance_sheet_crud().getMasterBalanceByShopId(shop.id);

            if (masterbalance == null)
            {
                masterbalance = new master_balance_sheet
                {
                    shop           = shop.id,
                    credit_balance = 0,
                    online_credit  = 0,
                    sales_balance  = 0,
                    netbalance     = 0,
                };
                masterbalance = new CRUD.master_balance_sheet_crud(masterbalance).insert_master_balance_sheet();
            }

            master_transaction reversalmastertransaction = new master_transaction();


            master_lodgement_reimbursment newmlr = new master_lodgement_reimbursment
            {
                amount               = amount,
                bank                 = 0,//interswitch id,
                date                 = date,
                shop                 = shop.id,
                teller_number        = pnr.PaymentLogId.ToString(),
                islocked             = true,
                isverified           = true,
                payment_type         = 5,
                transaction_category = tran.id,
            };

            login lodin = db.logins.Single(a => a.username == "InterSwitch");
            master_transaction newmastertransaction = new master_transaction
            {
                amount          = Math.Abs(amount),
                balance_before  = (masterbalance != null) ? masterbalance.sales_balance : 0,
                balance_after   = (masterbalance != null) ? getbal(masterbalance.sales_balance, amount, tran) : amount,
                shop            = shop.id,
                trans_category  = tran.id,
                trans_timestamp = DateTime.Now,
                trans_type      = (tran.type == true) ? 1 : 0,
                posted_by       = lodin.id,// interswitch id,
                description     = pnr.PaymentReference + " Posted For " + date.ToShortDateString(),
                details         = (tran.code == "L") ? "Lodgement For " + date.ToShortDateString() : "Lodgement Reversal For " + date.ToShortDateString()
            };

            masterbalance.sales_balance = (masterbalance != null) ? getbal(masterbalance.sales_balance, newmastertransaction.amount, tran) : newmastertransaction.amount;
            masterbalance.netbalance    = (masterbalance != null) ? getbal(masterbalance.netbalance, newmastertransaction.amount, tran) : newmastertransaction.amount;

            bool loadtran = new Utilities.TransactionHelper().SaveMasterLodgementTransaction(newmlr, newmastertransaction, masterbalance);

            if (loadtran)
            {
                try
                {
                    bool mailvalidity = new Utilities.Mail_Validity_Helper().getMailSendingStatus();
                    SMS_Vendor_Validity_Helper valhelp = new SMS_Vendor_Validity_Helper();
                    sms_vendor vendor = valhelp.getVendorsByName("50kobo");

                    bool smsvalidity = (DateTime.Today <= vendor.expiry_date) ? true : false;

                    if (newmlr.bank1.code != "CASH")
                    {
                        sms message;
                        if (tran.code == "L")
                        {
                            if (smsvalidity)
                            {
                                sm mm = new CRUD.sms_crud().findByCode("CA");
                                message = new sms();
                                shop    = new CRUD.shop_crud().find_shop_By_ID(shop.id);
                                if (message.initializeParameters(shop, mm.subject.Trim() + "\r\n" + mm.content.Trim() + "\r\n" + mm.conclusion.Trim(), newmlr))
                                {
                                    message.CustomizeAndSendSMS();
                                }
                            }
                            if (mailvalidity)
                            {
                                mail       mail   = new CRUD.mail_crud().findByCode("LA");
                                MailClient client = new MailClient();
                                client.SendLodgementReimbursementMail(shop, mail, newmastertransaction);
                            }
                        }
                        else if (tran.code == "R")
                        {
                            if (smsvalidity)
                            {
                                sm mm = new CRUD.sms_crud().findByCode("DA");
                                message = new sms();
                                if (message.initializeParameters(shop, mm.subject + "\r\n" + mm.content + "\r\n" + mm.conclusion, newmlr))
                                {
                                    message.CustomizeAndSendSMS();
                                }
                            }
                            if (mailvalidity)
                            {
                                mail       mail   = new CRUD.mail_crud().findByCode("RA");
                                MailClient client = new MailClient();
                                client.SendLodgementReimbursementMail(shop, mail, newmastertransaction);
                            }
                        }
                    }
                }
                catch (Exception)
                {
                }
            }
            else
            {
            }
        }
예제 #6
0
        private bool savePaymentDetails(PaymentNotificationRequestHelper pnr)
        {
            BettingSuiteDataContext db = new BettingSuiteDataContext();

            if (iSNotDuplicate(pnr.getPaymentLogId(), db))
            {
                try
                {
                    using (TransactionScope scope = new TransactionScope())
                    {
                        PaymentNotificationRequest pr = setPaymentRequestObjAndSave(pnr, db);
                        shop shop = new CRUD.shop_crud().find_shop_By_ID(pr.CustReference);
                        foreach (PaymentItemHelper it in pnr.getPaymentItems())
                        {
                            if (it.getItemCode().Equals(ConfigurationManager.AppSettings["SalesCode"].ToString()))
                            {
                                AddSalesTransaction(shop, pr, db);
                            }
                            else if (it.getItemCode().Equals(ConfigurationManager.AppSettings["LeaseDebtCode"].ToString()))
                            {
                                AddDebtTransaction(shop, pr, db);
                            }
                            else if (it.getItemCode().Equals(ConfigurationManager.AppSettings["OperationalDebtCode"].ToString()))
                            {
                                AddDebtTransaction(shop, pr, db);
                            }
                            else if (it.getItemCode().Equals(ConfigurationManager.AppSettings["Online Agency"].ToString()))
                            {
                                //sendmail
                                MailClient mc   = new MailClient();
                                mail       mail = new CRUD.mail_crud().findByCode("OL");
                                string     body = mail.content;
                                body = body.Replace("{shop_code}", shop.shop_code);
                                body = body.Replace("{account_name}", pnr.getCustomerName());
                                body = body.Replace("{amount}", "₦" + pr.Amount.ToString());
                                body = body.Replace("{amount_to_lodge}", "₦" + (decimal.Multiply(pr.Amount, decimal.Parse("1.10"))).ToString());
                                body = body.Replace("{payment_method}", "InterSwitch");

                                mc.SendBulkMail(ConfigurationManager.AppSettings["ONLINE SENDING MAIL"].ToString(), shop.shop_code + " (₦" + pr.Amount.ToString() + ") ", body);
                                //send sms to agent
                                SMS_Vendor_Validity_Helper valhelp = new SMS_Vendor_Validity_Helper();
                                sms_vendor vendor = valhelp.getVendorsByName("50kobo");

                                bool smsvalidity = (DateTime.Today <= vendor.expiry_date) ? true : false;

                                if (smsvalidity)
                                {
                                    sms message = new sms();
                                    if (message.initializeParameters(shop, "Online Lodgement Confirmation" + "\r\n" + "Your lodgement of " + pr.Amount.ToString() + " for online agency has being confirmed. You would be credited with " + (decimal.Multiply(pr.Amount, decimal.Parse("1.10"))).ToString() + "\r\n" + "", pr.PaymentDate))
                                    {
                                        message.CustomizeAndSendSMS();
                                    }
                                }
                                //send online dept updates on online user
                            }
                            else if (it.getItemCode().Equals(ConfigurationManager.AppSettings["Online User"].ToString()))
                            {
                            }
                            else if (it.getItemCode().Equals(ConfigurationManager.AppSettings["Payment Commision"].ToString()))
                            {
                                //futute implementation
                            }
                            else
                            {
                                SMS_Vendor_Validity_Helper valhelp = new SMS_Vendor_Validity_Helper();
                                sms_vendor vendor = valhelp.getVendorsByName("50kobo");

                                bool smsvalidity = (DateTime.Today <= vendor.expiry_date) ? true : false;

                                if (smsvalidity)
                                {
                                    sms message = new sms();
                                    if (message.initializeParameters(shop, "Payment Confirmation" + "\r\n" + "Your lodgement of " + pr.Amount.ToString() + " for " + it.getItemName() + " has being confirmed and would be processed shortly" + "\r\n" + "call 014609630 for info/complaints", pr.PaymentDate))
                                    {
                                        message.CustomizeAndSendSMS();
                                    }
                                }
                            }
                        }

                        db.SubmitChanges();
                        scope.Complete();

                        return(true);
                    }
                }
                catch (Exception)
                {
                    return(false);
                }
            }
            else
            {
            }
            return(false);
        }
예제 #7
0
        private decimal lodgeDebt(List <debt> shopdebt, decimal amount, master_balance_sheet shopbal)
        {
            foreach (debt debt in shopdebt)
            {
                transaction_category debttran = db.transaction_categories.SingleOrDefault(a => a.code == "DL");
                bank         bank             = new CRUD.bank_crud().find_bank_By_Code("INT");
                payment_type ptype            = new CRUD.payment_type_crud().find_payment_type_By_ID(1);

                login lodin = db.logins.Single(a => a.username == "InterSwitch");
                if (amount > 0)
                {
                    //debt less than or equal to bonus
                    if (debt.current_amount <= amount && debt.status == true && debt.current_amount > 0)
                    {
                        decimal temp = debt.current_amount.Value;

                        debt.current_amount = 0;

                        debt.status             = false;
                        debt.installment_count += 1;



                        debt_transaction dtran = new debt_transaction
                        {
                            amount          = temp,
                            app_id          = Application().app_id,
                            balance_after   = getbal(temp, temp, debttran),
                            balance_before  = temp,
                            description     = debttran.description + " " + "for " + DateTime.Today,
                            details         = debttran.description + " " + "for " + DateTime.Today,
                            posted_by       = lodin.id,
                            shop            = debt.shop,
                            trans_category  = debttran.id,
                            trans_timestamp = DateTime.Now,
                            trans_type      = (debttran.type == true) ? 0 : 1,
                            debt            = debt.id,
                        };
                        db.debt_transactions.InsertOnSubmit(dtran);
                        db.SubmitChanges();

                        debt_transaction debtIdtran = new CRUD.debt_transaction_crud().find_debt_transaction_By_AppId(dtran.app_id);

                        debt_lodgement_reimbursment newmlr = new debt_lodgement_reimbursment
                        {
                            app_id               = Application().app_id,
                            amount               = temp,
                            bank                 = bank.id,
                            date                 = DateTime.Today,
                            shop                 = debt.shop,
                            teller_number        = "",
                            islocked             = true,
                            isverified           = true,
                            payment_type         = ptype.id,
                            transaction          = (debtIdtran != null) ? debtIdtran.id : 142,
                            transaction_category = debttran.id,
                        };

                        db.debt_lodgement_reimbursments.InsertOnSubmit(newmlr);
                        amount -= temp;


                        //debtTransactionToSave.Add(dtran);

                        shopbal.credit_balance = getbal(shopbal.credit_balance, temp, debttran);

                        shopbal.netbalance = getbal(shopbal.netbalance, temp, debttran);

                        //SAVE DEBT .... BALANCES

                        debt DebtToUpdate = db.debts.SingleOrDefault(a => a.id == debt.id);
                        DebtToUpdate.current_amount    = debt.current_amount;
                        DebtToUpdate.status            = debt.status;
                        DebtToUpdate.installment_count = debt.installment_count;

                        master_balance_sheet salesbalancesToUpdate = db.master_balance_sheets.SingleOrDefault(a => a.shop == shopbal.shop);
                        salesbalancesToUpdate.credit_balance = shopbal.credit_balance;
                        salesbalancesToUpdate.netbalance     = shopbal.netbalance;
                        db.SubmitChanges();

                        shop shop = new CRUD.shop_crud().find_shop_By_ID(debt.shop);
                        SendSmsAndMail(shop, debttran, debt, dtran, newmlr);
                    }
                    else if (debt.current_amount > amount && debt.status == true && debt.current_amount > 0)
                    {
                        decimal temp = debt.current_amount.Value;
                        debt.current_amount     = getbal(debt.current_amount, amount, debttran);
                        debt.installment_count += 1;



                        debt_transaction dtran = new debt_transaction
                        {
                            amount          = amount,
                            app_id          = Application().app_id,
                            balance_after   = getbal(temp, amount, debttran),
                            balance_before  = temp,
                            description     = debttran.description + " " + "for " + DateTime.Today,
                            details         = debttran.description + " " + "for " + DateTime.Today,
                            posted_by       = lodin.id,
                            shop            = debt.shop,
                            trans_category  = debttran.id,
                            trans_timestamp = DateTime.Now,
                            trans_type      = (debttran.type == true) ? 0 : 1,
                            debt            = debt.id,
                        };


                        db.debt_transactions.InsertOnSubmit(dtran);
                        db.SubmitChanges();
                        //debtTransactionToSave.Add(dtran);

                        debt_transaction debtIdtran = new CRUD.debt_transaction_crud().find_debt_transaction_By_AppId(dtran.app_id);

                        debt_lodgement_reimbursment newmlr = new debt_lodgement_reimbursment
                        {
                            app_id               = Application().app_id,
                            amount               = temp,
                            bank                 = bank.id,
                            date                 = DateTime.Today,
                            shop                 = debt.shop,
                            teller_number        = "",
                            islocked             = true,
                            isverified           = true,
                            payment_type         = ptype.id,
                            transaction          = (debtIdtran != null) ? debtIdtran.id : 142,
                            transaction_category = debttran.id,
                        };
                        db.debt_lodgement_reimbursments.InsertOnSubmit(newmlr);


                        shopbal.credit_balance = getbal(shopbal.credit_balance, amount, debttran);

                        shopbal.netbalance = getbal(shopbal.netbalance, amount, debttran);

                        //SAVE DEBT .... BALANCES

                        debt DebtToUpdate = db.debts.SingleOrDefault(a => a.id == debt.id);
                        DebtToUpdate.current_amount    = debt.current_amount;
                        DebtToUpdate.status            = debt.status;
                        DebtToUpdate.installment_count = debt.installment_count;

                        master_balance_sheet salesbalancesToUpdate = db.master_balance_sheets.SingleOrDefault(a => a.shop == shopbal.shop);
                        salesbalancesToUpdate.credit_balance = shopbal.credit_balance;
                        salesbalancesToUpdate.netbalance     = shopbal.netbalance;
                        amount -= amount;
                        db.SubmitChanges();
                        shop shop = new CRUD.shop_crud().find_shop_By_ID(debt.shop);
                        SendSmsAndMail(shop, debttran, debt, dtran, newmlr);
                        break;
                    }
                }
            }

            return(amount);
        }