Пример #1
0
        public void SendPaySMS(DataContext _db, int card_id)
        {
            RentSMSInfo    rentSMS     = SendSMSPay(_db, card_id);
            RentSMSData    rentSMSData = new RentSMSData(_db);
            CardDetailData _card       = rentSMSData.returnCardDetailData(card_id);

            if (rentSMS.onPayMsg != null)
            {
                Task.Run(async() => { await Utils.Utils.sendMessage(_card.Card.Customer.Phone1, rentSMS.onPayMsg); }).Wait();
                Task.Run(async() => { await Utils.Utils.sendMessage("598733767", "ijaris gadaxda " + _card.Card.AbonentNum); }).Wait();
                Task.Run(async() => { await Utils.Utils.sendMessage("571711305", "ijaris gadaxda " + _card.Card.AbonentNum); }).Wait();
            }
        }
Пример #2
0
        public void saveRentFinisheDate(CardDetailData _card)
        {
            try
            {
                _db.Entry(_card.Card).State = System.Data.Entity.EntityState.Modified;
                _db.SaveChanges();

                SendOSD sendOSD = new SendOSD();
                sendOSD.SendOSDCard(_db, _card);
            }
            catch
            {
            }
        }
Пример #3
0
        public void RentSavePayment()
        {
            RentData       rentData    = new RentData(resultRent._db);
            var            cards       = rentData.returnCard(resultRent.pay_data);
            RentSmsInfo    rentSmS     = new RentSmsInfo();
            List <Payment> payments    = new List <Payment>();
            List <PayType> _payTypes   = rentData.returnPayTypes();
            CardDetailData _cardAmount = rentData.returnCardDetailData(cards.Select(s => s.Id).FirstOrDefault());

            foreach (Card _card in cards)
            {
                var paym = new Payment
                {
                    CardId     = _card.Id,
                    UserId     = resultRent.user_id,
                    Tdate      = DateTime.Now,
                    FileAttach = "",
                    Amount     = 0,
                    PayRent    = resultRent.pay_data.RentAmount,
                    LogCard    = _card.Customer.Name + " " + _card.Customer.LastName + " ის ბარათზე - " + _card.CardNum,
                    LogCardNum = _card.CardNum,
                    LogPayType = _payTypes.FirstOrDefault(p => p.Id == resultRent.pay_data.PayType).Name,
                    PayTypeId  = resultRent.pay_data.PayType
                };
                if (_cardAmount.Amount < 0)
                {
                    if ((_cardAmount.Amount + resultRent.pay_data.RentAmount) > 0)
                    {
                        paym.PayRent       = (_cardAmount.Amount + resultRent.pay_data.RentAmount);
                        paym.Amount        = (_cardAmount.Amount) * (-1);
                        _cardAmount.Amount = (_cardAmount.Amount) * (-1);
                    }
                    else
                    {
                        paym.Amount  = resultRent.pay_data.RentAmount;
                        paym.PayRent = 0;
                    }
                }
                payments.Add(paym);
            }
            rentData.SavePayments(payments.Select(s => s).FirstOrDefault(), rentData.SavePayTransaction(resultRent.pay_data, resultRent.fromPay));
            if (_cardAmount.Amount >= 0)
            {
                SetFinishDate(payments.Select(s => s.CardId).FirstOrDefault());
            }
        }
Пример #4
0
        public void SendOSDCard(DataContext _db, CardDetailData _card)
        {
            var _params = _db.Params.ToList();

            string[]  address = _params.Where(c => c.Name == "CASAddress").Select(c => c.Value).First().Split(':');
            CASSocket _socket = new CASSocket()
            {
                IP = address[0], Port = int.Parse(address[1])
            };

            _socket.Connect();

            if (!_socket.SendEntitlementRequest(Convert.ToInt32(_card.Card.CardNum), new short[1] {
                9
            }, DateTime.Now.AddHours(-4), _card.Card.RentFinishDate.AddHours(-4), true))
            {
                //throw new Exception(DateTime.Now.ToString("dd-MM-yyyy HH:mm:ss" + "ვერ მოხერხდა ბარათის სტატუსის შეცვლა: " + Utils.Utils.GetEnumDescription(_card.Card.CardStatus) + " , " + _card.Card.AbonentNum));
            }
            _socket.Disconnect();
        }
Пример #5
0
        public void SaveRentAccruals(CardDetailData _card)
        {
            try
            {
                var ren_amount   = decimal.Parse(_db.Params.First(p => p.Name == "Rent").Value);
                int service_days = int.Parse(_db.Params.First(c => c.Name == "ServiceDays").Value);
                _db.CardCharges.Add(new CardCharge()
                {
                    CardId = _card.Card.Id, RentAmount = Math.Round((decimal)ren_amount / service_days, 2), Tdate = DateTime.Now, Status = CardChargeStatus.PenDaily
                });

                _card.Card.CardStatus       = CardStatus.Rent;
                _db.Entry(_card.Card).State = System.Data.Entity.EntityState.Modified;

                _db.SaveChanges();
            }
            catch
            {
            }
        }
Пример #6
0
        public RentSMSInfo SendSMSPay(DataContext _db, int card_id)
        {
            MessageTemplate msg         = null;
            RentSMSInfo     rentSmsInfo = new RentSMSInfo();
            RentSMSData     rentSMSData = new RentSMSData(_db);
            CardDetailData  _card       = rentSMSData.returnCardDetailData(card_id);

            if ((_card.Card.CardStatus == CardStatus.Rent) || _card.Card.CardStatus == CardStatus.Active)
            {
                msg = rentSMSData.OnPayRent();
                if (msg != null)
                {
                    rentSmsInfo.onPayMsg = String.Format(msg.Desc, _card.Card.AbonentNum, Math.Round(rentSMSData.PaymentAmount(card_id), 2), _card.Card.RentFinishDate.ToString("dd/MM/yyyy"));
                }

                rentSmsInfo.phone = _card.Card.Customer.Phone1;
            }
            if ((_card.Card.CardStatus == CardStatus.Closed && rentSMSData.returnPayment(card_id) <= _card.RentAmount))
            {
                msg = rentSMSData.OnPayRentNotAmount();
                if (msg != null)
                {
                    rentSmsInfo.onPayMsg = String.Format(msg.Desc, _card.Card.AbonentNum, Math.Round(rentSMSData.PaymentAmount(card_id), 2), Math.Round(_card.RentAmount - rentSMSData.returnPayment(card_id), 2));
                }

                rentSmsInfo.phone = _card.Card.Customer.Phone1;
            }
            if (_card.Card.CardStatus == CardStatus.Paused)
            {
                msg = rentSMSData.OnPayRentPaused();
                if (msg != null)
                {
                    rentSmsInfo.onPayMsg = String.Format(msg.Desc, _card.Card.AbonentNum, Math.Round(rentSMSData.returnPayment(card_id), 2), _card.Card.PauseDate.ToString("dd/MM/yyyy"));
                }

                rentSmsInfo.phone = _card.Card.Customer.Phone1;
            }
            rentSmsInfo.phone = _card.Card.Customer.Phone1;
            return(rentSmsInfo);
        }
        public void MiniSMSDelete()
        {
            using (DataContext _db = new DataContext())
            {
                try
                {
                    Task.Run(async() => { await Utils.Utils.sendMessage("598733767", "MiniSMS დაწყება - " + DateTime.Now.ToString()); }).Wait();
                    var __cards = _db.Cards.Include("Customer").Include("Subscribtions.SubscriptionPackages.Package").Where(c => c.CardStatus != CardStatus.Canceled && (c.CardStatus == CardStatus.Closed)).ToList();
                    var _Card   = __cards.Where(c => c.Subscribtions.Where(s => s.Status == true).First().SubscriptionPackages.Any(s => s.Package.Price == 12)).Select(c => c).ToList();
                    __cards = __cards.Except(_Card).ToList();
                    string[] address = _db.Params.Where(p => p.Name == "CASAddress").Select(c => c.Value).First().Split(':');
                    int      count = 0, error = 0;
                    foreach (var item in __cards)
                    {
                        CardDetailData cardDetailData = new CardDetailData();
                        cardDetailData.CasIds = item.Subscribtions.FirstOrDefault(s => s.Status).SubscriptionPackages.Select(sp => (short)sp.Package.CasId);
                        for (int i = 1; i <= 30; i++)
                        {
                            CASSocket _socket = new CASSocket()
                            {
                                IP = address[0], Port = int.Parse(address[1])
                            };
                            _socket.Connect();
                            if (!_socket.SendEntitlementRequest(Convert.ToInt32(item.CardNum), cardDetailData.CasIds.ToArray(), item.FinishDate.AddHours(-4).AddDays(i), item.FinishDate.AddHours(-4).AddDays(i), false))
                            {
                                error++;
                            }

                            _socket.Disconnect();
                        }
                        count++;
                    }
                    Task.Run(async() => { await Utils.Utils.sendMessage("598733767", "MiniSMS ერორი " + error + " - " + DateTime.Now.ToString()); }).Wait();
                }
                catch (Exception ex)
                {
                    var xx = ex;
                }
            }
        }
Пример #8
0
        public DateTime?SetFinishDate(int card_id)
        {
            RentData       rentData = new RentData(resultRent._db);
            CardDetailData _card    = rentData.returnCardDetailData(card_id);

            if (_card != null)
            {
                decimal balance = Math.Round(_card.PaymentAmount - _card.ChargeAmount, 2);
                decimal amount  = (decimal)_card.RentAmount;
                int     day     = 0;

                if (amount == 0)
                {
                    return(null);
                }
                int service_days = rentData.serviceDay();
                while (true)
                {
                    int     coeff        = service_days;
                    decimal dayly_amount = amount / coeff;
                    dayly_amount -= (dayly_amount * (decimal)_card.Card.Discount / 100);
                    if (balance < dayly_amount)
                    {
                        break;
                    }
                    balance -= dayly_amount;
                    day++;
                }
                FinishDate finishDate = new FinishDate();
                _card.Card.RentFinishDate = finishDate.GenerateFinishDate(_card.CahrgeTime).AddDays(day);

                rentData.saveRentFinisheDate(_card);

                return(_card.Card.FinishDate);
            }

            return(null);
        }
Пример #9
0
 public void saveRentFinisheDate(CardDetailData _card)
 {
     try
     {
         decimal balance = Math.Round(_card.PaymentAmount - _card.ChargeAmount, 2);
         decimal amount  = (decimal)_card.RentAmount;
         if ((_card.Amount >= 0 && _card.Card.CardStatus == CardStatus.Rent && balance >= amount) || (_card.Amount >= 0 && _card.Card.CardStatus == CardStatus.Closed && balance >= amount) || (_card.Amount >= 0 && _card.Card.CardStatus == CardStatus.Blocked && balance >= amount))
         {
             _card.Card.CardStatus       = CardStatus.Rent;
             _db.Entry(_card.Card).State = System.Data.Entity.EntityState.Modified;
             _db.SaveChanges();
             SendOSD sendOSD = new SendOSD();
             sendOSD.SendOSDCard(_db, _card);
         }
         else
         {
             _db.Entry(_card.Card).State = System.Data.Entity.EntityState.Modified;
             _db.SaveChanges();
         }
     }
     catch
     {
     }
 }
Пример #10
0
        public void SaveRentAccruals(DataContext _db, CardDetailData _card)
        {
            RentAccrualsData rentAccrualsData = new RentAccrualsData(_db);

            rentAccrualsData.SaveRentAccruals(_card);
        }
Пример #11
0
        public void Execute(IJobExecutionContext context)
        {
            //context.Trigger.JobDataMap.GetString("");
            using (DataContext _db = new DataContext())
            {
                _db.Database.CommandTimeout = 6000;
                using (DbContextTransaction tran = _db.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    try
                    {
                        //SELECT DATEDIFF(minute, GETDATE(), '2006-01-01 00:00:00.0000000');
                        //string sql = @"SELECT cr.id FROM book.Cards AS cr INNER JOIN book.Customers AS c ON c.id=cr.customer_id WHERE cr.status=0 AND DATEDIFF(day,Convert(varchar(10), getdate(), 126)+' 23:59:0.000',cr.finish_date)=2";
                        //string sql = @"SELECT cr.id FROM book.Cards AS cr INNER JOIN book.Customers AS c ON c.id=cr.customer_id where DATEDIFF(second, GETDATE(), cr.finish_date)<=60 AND DATEDIFF(second, GETDATE(), cr.finish_date)>=30";
                        //string sql = @"SELECT cr.id FROM book.Cards as cr WHERE cr.card_num = '38067026'";
                        string sql = @"SELECT cr.id FROM book.Cards AS cr INNER JOIN book.Customers AS c ON c.id=cr.customer_id where DATEDIFF(day, '" + DateTime.Now + "', cr.finish_date)=0";
                        //string sql = @"SELECT cr.id FROM book.Cards AS cr INNER JOIN book.Customers AS c ON c.id=cr.customer_id where abonent_num='9105560' or abonent_num='1086681'";
                        List <Param>    Params       = _db.Params.ToList();
                        string[]        address      = Params.Where(c => c.Name == "CASAddress").Select(c => c.Value).First().Split(':');
                        string          username     = Params.First(p => p.Name == "SMSPassword").Value;
                        string          password     = Params.First(p => p.Name == "SMSUsername").Value;
                        int             osd_duration = int.Parse(Params.First(c => c.Name == "OSDDuration").Value);
                        List <Card>     cards;
                        MessageTemplate message;     // = _db.AutoMessageTemplates.Where(m => m.Name == "ReportDisabling").FirstOrDefault();
                        MessageTemplate message_geo; // = _db.AutoMessageTemplates.Where(m => m.Name == "ReportDisabling_GEO").FirstOrDefault();

                        int[] ids = _db.Database.SqlQuery <int>(sql).ToArray();

                        //original source
                        //cards = _db.Cards.Include("Customer")//.Include("Receiver").Include("Tower")
                        //                            .Where(c => c.CardStatus == CardStatus.Active && c.Customer.Type != CustomerType.Technic)
                        //                            .Where(c => ids.Contains(c.Id))
                        //                            .Select(c => c).ToList();

                        cards = _db.Cards.Where(c => ids.Contains(c.Id)).Where(c => c.CardStatus == CardStatus.Active && c.Customer.Type != CustomerType.Technic).ToList();

                        foreach (Card card in cards)
                        {
                            message     = _db.MessageTemplates.Where(m => m.Name == "OnShare8Active").FirstOrDefault();
                            message_geo = _db.MessageTemplates.Where(m => m.Name == "OnShare8Active_GEO").FirstOrDefault();



                            Subscribtion curr_sb                  = _db.Subscribtions.Where(s => s.CardId == card.Id && s.Status == true).First();
                            List <SubscriptionPackage> sbp        = _db.SubscriptionPackages.Where(s => s.SubscriptionId == curr_sb.Id).ToList();
                            List <Package>             curr_packs = new List <Package>();
                            foreach (var sbs in sbp)
                            {
                                List <Package> package = _db.Packages.Where(p => p.Id == sbs.PackageId).ToList();
                                //if (package.RentType != RentType.block)
                                //{
                                //    curr_packs.Add(package);
                                //}
                                if (package.Any(p => p.Id == 304085))
                                {
                                    CardDetailData _cardt = _db.Cards.Where(c => c.Id == card.Id).Select(c => new CardDetailData
                                    {
                                        PaymentAmount  = c.Payments.Select(s => (decimal?)s.Amount).Sum() ?? 0,
                                        ChargeAmount   = c.CardCharges.Select(s => (decimal?)s.Amount).Sum() ?? 0,
                                        Card           = c,
                                        IsBudget       = c.Customer.IsBudget,
                                        CustomerType   = c.Customer.Type,
                                        SubscribAmount = c.Subscribtions.Where(s => s.Status).FirstOrDefault().Amount,
                                        CasIds         = c.Subscribtions.FirstOrDefault(s => s.Status).SubscriptionPackages.Select(sp => (short)sp.Package.CasId),
                                        MinPrice       = c.Subscribtions.FirstOrDefault(s => s.Status).SubscriptionPackages.Sum(p => p.Package.MinPrice),
                                        CardLogs       = c.CardLogs.ToList()
                                    }).FirstOrDefault();

                                    double balance = Math.Round((double)Utils.Utils.GetBalance(_cardt.PaymentAmount, _cardt.ChargeAmount), 2);

                                    string messageText     = String.Format(message.Desc, card.AbonentNum);
                                    string messageText_Geo = message_geo.Desc;// String.Format(message_geo.MessageText, card.FinishDate.ToString("dd/MM/yyyy"), card.AbonentNum);

                                    CASSocket _socket = new CASSocket()
                                    {
                                        IP = address[0], Port = int.Parse(address[1])
                                    };
                                    _socket.Connect();

                                    if (!_socket.SendOSDRequest(int.Parse(card.CardNum), messageText_Geo, DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Utc), osd_duration))
                                    {
                                        //_db.MessageNotSendLogs.Add(new MessageNotSendLog
                                        //{
                                        //    CardId = card.Id,
                                        //    MessageId = message_geo.Id,
                                        //    MessageType = MessageType.OSD,
                                        //});
                                    }

                                    _socket.Disconnect();

                                    //_db.SaveChanges();

                                    string phoneto = _db.Customers.Where(cs => cs.Id == card.CustomerId).Select(cu => cu.Phone1).FirstOrDefault();
                                    Task.Run(async() => { await Utils.Utils.sendMessage(phoneto, messageText); }).Wait();
                                    _db.MessageLoggings.Add(new MessageLogging()
                                    {
                                        card_id    = card.Id,
                                        tdate      = DateTime.Now,
                                        status     = MessageLoggingStatus.OnShare8Active,
                                        message_id = message.Id
                                    });
                                    _db.SaveChanges();
                                    break;
                                }
                            }



                            //message.MessageText = String.Format(message.MessageText, card.FinishDate.ToString("dd/MM/yyyy"), card.AbonentNum);
                            //message_geo.MessageText = String.Format(message_geo.MessageText, card.FinishDate.ToString("dd/MM/yyyy"), card.AbonentNum);
                        }
                        Task.Run(async() => { await Utils.Utils.sendMessage("598733767", "დამთავრდა სმს გაგზავნა გათიშვის დღეს 8-₾ აბონენტებისთვის"); }).Wait();
                        Task.Run(async() => { await Utils.Utils.sendMessage("593668668", "დამთავრდა სმს გაგზავნა გათიშვის დღეს 8-₾ აბონენტებისთვის"); }).Wait();
                        Task.Run(async() => { await Utils.Utils.sendMessage("571711305", "დამთავრდა სმს გაგზავნა გათიშვის დღეს 8-₾ აბონენტებისთვის"); }).Wait();
                    }
                    catch (Exception ex)
                    {
                        tran.Rollback();
                    }
                }
            }
        }
Пример #12
0
        public void Execute(IJobExecutionContext context)
        {
            List <int> OneTicketMessed = new List <int>();

            RandomMessed(OneTicketMessed);

            try
            {
                using (DataContext _db = new DataContext())
                {
                    var Invoce_Code = _db.InvoiceLoggings.Select(s => s.invoce_code).ToList();
                    if (Invoce_Code != null) // განმეორებადი კოდის გამორიცხვა
                    {
                        OneTicketMessed = OneTicketMessed.Except(Invoce_Code).ToList();
                    }
                    string   _Image   = ImageConvert();
                    DateTime dateFrom = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1, 0, 0, 0);
                    //ViewBag.FilePath = _db.Params.Where(p => p.Name == "FTPHost").Select(p => p.Value).First() + "invoce/";
                    var                   _CustumerI = _db.Customers.Include("Cards").Include("CustomerSellAttachments").Where(c => c.Type == CustomerType.Juridical).ToList();
                    InvoicesList          _invoce    = new InvoicesList();
                    List <DisruptInvoice> Disrupt    = new List <DisruptInvoice>();
                    //Task<CardInfo> _info;

                    foreach (var item in _CustumerI)
                    {
                        decimal balanceSum = 0; bool send_invoce = false;
                        foreach (var card_item in item.Cards)
                        {
                            _card = _db.Cards.Where(c => c.Id == card_item.Id).Include("Customer").Include("Subscribtions.SubscriptionPackages.Package").Select(c => new CardDetailData
                            {
                                PaymentAmount  = c.Payments.Sum(p => (decimal?)p.Amount) ?? 0,
                                ChargeAmount   = c.CardCharges.Select(s => (decimal?)s.Amount).Sum() ?? 0,
                                Card           = c,
                                CustomerType   = c.Customer.Type,
                                IsBudget       = c.Customer.IsBudget,
                                SubscribAmount = c.Subscribtions.Where(s => s.Status).FirstOrDefault().Amount,
                                MinPrice       = c.Subscribtions.FirstOrDefault(s => s.Status).SubscriptionPackages.Sum(p => p.Package.MinPrice),
                                CasIds         = c.Subscribtions.FirstOrDefault(s => s.Status).SubscriptionPackages.Select(sp => (short)sp.Package.CasId)
                            }).FirstOrDefault();
                            decimal balance = Utils.Utils.GetBalance(_card.PaymentAmount, _card.ChargeAmount);
                            if (/*_info.Balances.Select(s => s.CurrentBalance).LastOrDefault()*/ balance < 0)
                            {
                                DisruptInvoice _disrup_invoice = new DisruptInvoice();
                                _disrup_invoice.Debts          = balance;
                                _disrup_invoice.abonent_number = card_item.AbonentNum;
                                _disrup_invoice.Invoices_Code  = _card.Card.Customer.Code;
                                _disrup_invoice.CompanyName    = item.Name;
                                Disrupt.Add(_disrup_invoice);

                                balanceSum += balance;
                            }
                        }
                        if (balanceSum < 0)
                        {
                            //var ID = item.Cards.Select(s => s.Id).FirstOrDefault();
                            //var pack = _db.Subscribtions.Include("SubscriptionPackages").Where(c => c.CardId == ID).Select(ss => ss).ToList();
                            ////var card_packages = pack.Where(c => c.CardId == ID).SelectMany(s => s.SubscriptionPackages).ToList();
                            JuridicalInvoicesList juridical_invoice = new JuridicalInvoicesList()
                            {
                                Name             = item.Name,
                                dateFrom         = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1, 0, 0, 0),
                                dateTo           = DateTime.Now,//,
                                _attachment      = item.CustomerSellAttachments.Select(s => s).ToList(),
                                balance          = Math.Abs(balanceSum),
                                Count            = item.Cards.Count(),
                                Invoices_Code    = _card.Card.Customer.Code,
                                PackagesPrice    = _card.SubscribAmount,
                                Ramdom_Generator = OneTicketMessed[0],
                                Image            = _Image,
                                Phone            = item.Phone1
                            };
                            var SellAttachments = _db.SellAttachments.ToList();
                            var result          = AutoInvoice(juridical_invoice);
                            var _result         = DisruptAutoInvoice(Disrupt);
                            Disrupt.Clear();
                            bool send_sms               = false;
                            bool send_email             = SendMail(item.Email, juridical_invoice.Name, _db.Params.Where(c => c.Name == "SystemEmail").Select(s => s.Value).FirstOrDefault(), _db.Params.Where(c => c.Name == "SystemEmailPassword").Select(s => s.Value).FirstOrDefault(), juridical_invoice.Invoices_Code);
                            bool _send_email_Accounting = SendMail("*****@*****.**", juridical_invoice.Name, _db.Params.Where(c => c.Name == "SystemEmail").Select(s => s.Value).FirstOrDefault(), _db.Params.Where(c => c.Name == "SystemEmailPassword").Select(s => s.Value).FirstOrDefault(), juridical_invoice.Invoices_Code);
                            bool _send_email_aprove     = SendMail(_db.Params.Where(c => c.Name == "SystemEmail").Select(s => s.Value).FirstOrDefault(), juridical_invoice.Name, _db.Params.Where(c => c.Name == "SystemEmail").Select(s => s.Value).FirstOrDefault(), _db.Params.Where(c => c.Name == "SystemEmailPassword").Select(s => s.Value).FirstOrDefault(), juridical_invoice.Invoices_Code);
                            bool _send_email_disrupt    = Disrupt_SendMail("*****@*****.**", juridical_invoice.Name, _db.Params.Where(c => c.Name == "SystemEmail").Select(s => s.Value).FirstOrDefault(), _db.Params.Where(c => c.Name == "SystemEmailPassword").Select(s => s.Value).FirstOrDefault(), juridical_invoice.Invoices_Code);
                            if (item.Email != null)
                            {
                                send_sms = SendSms("568304304");
                                send_sms = SendSms(item.Phone1);
                            }
                            var _invoice = new InvoceLogging
                            {
                                tdate       = DateTime.Now,
                                custumer_id = item.Id,
                                name        = item.Name,
                                invoce_code = OneTicketMessed[0],
                                send_email  = send_email,
                                send_sms    = send_sms
                            };
                            _db.InvoiceLoggings.Add(_invoice);
                            _db.SaveChanges();
                            OneTicketMessed.Remove(OneTicketMessed[0]);

                            Thread.Sleep(60000);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Utils.Utils.ErrorLogging(ex, @"C:\DigitalTV\InvoiceLog\log.txt");
            }
        }
Пример #13
0
        public void Execute(IJobExecutionContext context)
        {
            using (DataContext _db = new DataContext())
            {
                _db.Database.CommandTimeout = 6000;
                using (DbContextTransaction tran = _db.Database.BeginTransaction(System.Data.IsolationLevel.Serializable))
                {
                    try
                    {
                        string          sql          = @"SELECT cr.card_id FROM [dbo].[PromoCahngePack] AS cr where DATEDIFF(day, '" + DateTime.Now + "', cr.tdate)=0";
                        List <Param>    Params       = _db.Params.ToList();
                        string[]        address      = Params.Where(c => c.Name == "CASAddress").Select(c => c.Value).First().Split(':');
                        string          username     = Params.First(p => p.Name == "SMSPassword").Value;
                        string          password     = Params.First(p => p.Name == "SMSUsername").Value;
                        int             osd_duration = int.Parse(Params.First(c => c.Name == "OSDDuration").Value);
                        List <Card>     cards;
                        string          messageText = "";
                        MessageTemplate message     = new MessageTemplate(); // = _db.AutoMessageTemplates.Where(m => m.Name == "ReportDisabling").FirstOrDefault();
                        MessageTemplate message_geo;                         // = _db.AutoMessageTemplates.Where(m => m.Name == "ReportDisabling_GEO").FirstOrDefault();

                        int[] ids = _db.Database.SqlQuery <int>(sql).ToArray();

                        cards = _db.Cards.Where(c => ids.Contains(c.Id)).Where(c => c.Customer.Type != CustomerType.Technic).ToList();

                        foreach (Card card in cards)
                        {
                            Subscribtion curr_sb                  = _db.Subscribtions.Where(s => s.CardId == card.Id && s.Status == true).First();
                            List <SubscriptionPackage> sbp        = _db.SubscriptionPackages.Where(s => s.SubscriptionId == curr_sb.Id).ToList();
                            List <Package>             curr_packs = new List <Package>();
                            foreach (var sbs in sbp)
                            {
                                List <Package> package = _db.Packages.Where(p => p.Id == sbs.PackageId).ToList();

                                if (package.Any(p => p.Id == 304086))
                                {
                                    if (card.CardStatus == CardStatus.Closed)
                                    {
                                        CardDetailData _cardt = _db.Cards.Where(c => c.Id == card.Id).Select(c => new CardDetailData
                                        {
                                            PaymentAmount  = c.Payments.Select(s => (decimal?)s.Amount).Sum() ?? 0,
                                            ChargeAmount   = c.CardCharges.Select(s => (decimal?)s.Amount).Sum() ?? 0,
                                            Card           = c,
                                            IsBudget       = c.Customer.IsBudget,
                                            CustomerType   = c.Customer.Type,
                                            SubscribAmount = c.Subscribtions.Where(s => s.Status).FirstOrDefault().Amount,
                                            CasIds         = c.Subscribtions.FirstOrDefault(s => s.Status).SubscriptionPackages.Select(sp => (short)sp.Package.CasId),
                                            MinPrice       = c.Subscribtions.FirstOrDefault(s => s.Status).SubscriptionPackages.Sum(p => p.Package.MinPrice),
                                            CardLogs       = c.CardLogs.ToList()
                                        }).FirstOrDefault();

                                        double balance = Math.Round((double)Utils.Utils.GetBalance(_cardt.PaymentAmount, _cardt.ChargeAmount), 2);
                                        if (balance <= 0)
                                        {
                                            balance = balance - package.FirstOrDefault().MinPrice;
                                        }
                                        if (balance > 0 && balance < package.FirstOrDefault().MinPrice)
                                        {
                                            balance = package.FirstOrDefault().MinPrice - balance;
                                        }
                                        message     = _db.MessageTemplates.Where(m => m.Name == "Promo_Change_Active8_false").FirstOrDefault();
                                        messageText = String.Format(message.Desc, balance);
                                        string phoneto = _db.Customers.Where(cs => cs.Id == card.CustomerId).Select(cu => cu.Phone1).FirstOrDefault();
                                        Task.Run(async() => { await Utils.Utils.sendMessage(phoneto, messageText); }).Wait();
                                        _db.MessageLoggings.Add(new MessageLogging()
                                        {
                                            card_id    = card.Id,
                                            tdate      = DateTime.Now,
                                            status     = MessageLoggingStatus.PromoCahngeActive8,
                                            message_id = message.Id
                                        });
                                        _db.SaveChanges();
                                    }
                                    if (card.CardStatus == CardStatus.Active)
                                    {
                                        message     = _db.MessageTemplates.Where(m => m.Name == "Promo_Change_Active8").FirstOrDefault();
                                        messageText = String.Format(message.Desc, card.FinishDate);

                                        string phonetos = _db.Customers.Where(cs => cs.Id == card.CustomerId).Select(cu => cu.Phone1).FirstOrDefault();
                                        Task.Run(async() => { await Utils.Utils.sendMessage(phonetos, messageText); }).Wait();
                                        _db.MessageLoggings.Add(new MessageLogging()
                                        {
                                            card_id    = card.Id,
                                            tdate      = DateTime.Now,
                                            status     = MessageLoggingStatus.PromoCahngeClosed8,
                                            message_id = message.Id
                                        });
                                        _db.SaveChanges();

                                        SendOSDRequesSMS sendOSDReques = new SendOSDRequesSMS();
                                        sendOSDReques.SendOSD(card.CardNum, String.Format(_db.MessageTemplates.Where(m => m.Name == "Promo_Change_Active8_Geo").FirstOrDefault().Desc, card.FinishDate.ToString("dd/MM/yyyy")), _db.Params.ToList());
                                        //message_geo = _db.MessageTemplates.Where(m => m.Name == "OnShare8Active_GEO").FirstOrDefault();
                                    }
                                }
                            }
                        }
                        Task.Run(async() => { await Utils.Utils.sendMessage("598733767", "დამთავრდა სმს გაგზავნა პრომოსთვის" + ""); }).Wait();
                    }
                    catch
                    {
                    }
                }
            }
        }
Пример #14
0
        public void RentFinishDat(CardDetailData _card)
        {
            RentAccrualsLogic accrualsLogic = new RentAccrualsLogic();

            accrualsLogic.SetFinishDate(_db, _card.Card.Id);
        }
Пример #15
0
        public void CardAccruals(CardDetailData _card)
        {
            RentAccrualsLogic accrualsLogic = new RentAccrualsLogic();

            accrualsLogic.SaveRentAccruals(_db, _card);
        }