public ActionResult Edit(int id)
        {
            UserPermissionAction("MonthlySubscription", RoleAction.detail.ToString());
            CheckPermission();
            if (id < 0)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DateTime dt = DateTime.Now;

            var month = dt.ToString("MMMM");


            MonthlySubscription objMonthlySubscription = _MonthlySubscriptionService.GetMonthlySubscription(id);

            var models = new List <MonthlySubscriptionModel>();

            Mapper.CreateMap <Onlo.Entity.MonthlySubscription, Onlo.Models.MonthlySubscriptionModel>();
            Onlo.Models.MonthlySubscriptionModel MonthlySubscriptionModelrmodel = Mapper.Map <Onlo.Entity.MonthlySubscription, Onlo.Models.MonthlySubscriptionModel>(objMonthlySubscription);
            if (objMonthlySubscription == null)
            {
                return(HttpNotFound());
            }

            return(View(MonthlySubscriptionModelrmodel));
        }
        public IEnumerable <Customer> Read(string filePath)
        {
            if (filePath == null)
            {
                throw new ArgumentNullException(nameof(filePath));
            }

            if (!_fileReader.Exists(filePath))
            {
                throw new FileNotFoundException($"Input file {filePath} in not exists");
            }

            var lines     = _fileReader.ReadAllLines(filePath);
            var customers = new List <Customer>();

            foreach (var line in lines)
            {
                var columns = line.Split(_inputSettings.ColumnSeparator, StringSplitOptions.RemoveEmptyEntries);
                if (columns.Length < 2)
                {
                    throw new InvalidRowException("Invalid row format. less than 2 fields", line);
                }

                var name        = columns[0];
                var mode        = Enums.Parse <SubscriptionMode>(columns[1]);
                var extraParams = Array.Empty <string>();

                if (_modesWithExtraInfo.Contains(mode) && columns.Length == 2)
                {
                    throw new InvalidRowException($"Invalid row format for {mode.ToString()}. missing extra info", line);
                }

                if (_modesWithExtraInfo.Contains(mode))
                {
                    extraParams = columns[2]
                                  .Split(_inputSettings.ColumnValueSeparator, StringSplitOptions.RemoveEmptyEntries);
                }

                ISubscription subscription = mode switch
                {
                    SubscriptionMode.Never => new NeverSubscription(),
                    SubscriptionMode.Daily => new DailySubscription(),
                    SubscriptionMode.Weekly => WeeklySubscription.FromValues(extraParams),
                    SubscriptionMode.Monthly => MonthlySubscription.FromValues(line, extraParams),
                    _ => throw new ArgumentOutOfRangeException()
                };

                customers.Add(new Customer(name, subscription));
            }

            return(customers);
        }
    }
示例#3
0
        public void CustomerWithSubscriptionThatIsExpiredGetsCharged()
        {
            var subscription = new MonthlySubscription();
            var customer     = new Customer {
                Subscription = subscription
            };
            var processor = TestableBillingProcessor.Create(customer);

            processor.ProcessMonth(2011, 8);

            processor.MockCharger.Verify(c => c.ChargeCustomer(customer), Times.Once());
        }
        public ActionResult Edit([Bind(Include = "MonthlySubscriptionId,SubscriptionMonth,SubscriptionPrice")] MonthlySubscriptionModel MonthlySubscriptionModel)
        {
            UserPermissionAction("MonthlySubscription", RoleAction.view.ToString());
            CheckPermission();
            try
            {
                TempData["ShowMessage"] = "error";
                TempData["MessageBody"] = "Please fill the required field with valid data";
                if (ModelState.IsValid)
                {
                    //var Location = form["LocationLists"].ToString();



                    Mapper.CreateMap <Onlo.Models.MonthlySubscriptionModel, Onlo.Entity.MonthlySubscription>();
                    Onlo.Entity.MonthlySubscription MonthlySubscriptions     = Mapper.Map <Onlo.Models.MonthlySubscriptionModel, Onlo.Entity.MonthlySubscription>(MonthlySubscriptionModel);
                    MonthlySubscription             MonthlySubscriptionFound = _MonthlySubscriptionService.GetMonthlySubscriptions().Where(x => x.SubscriptionMonth == MonthlySubscriptions.SubscriptionMonth && x.MonthlySubscriptionId != MonthlySubscriptions.MonthlySubscriptionId).FirstOrDefault();
                    if (MonthlySubscriptionFound == null)
                    {
                        MonthlySubscriptions.IsActive = true;
                        _MonthlySubscriptionService.UpdateMonthlySubscription(MonthlySubscriptions);


                        TempData["ShowMessage"] = "success";
                        TempData["MessageBody"] = " Monthly Subscription update  successfully.";
                        return(RedirectToAction("Index"));
                        // end  Update CompanyEquipments
                    }

                    else
                    {
                        TempData["ShowMessage"] = "error";
                        if (MonthlySubscriptionFound.SubscriptionMonth.Trim().ToLower() == MonthlySubscriptionModel.SubscriptionMonth.Trim().ToLower()) //Check User Name
                        {
                            TempData["MessageBody"] = MonthlySubscriptionFound.SubscriptionMonth + " already exist.";
                        }

                        else
                        {
                            TempData["MessageBody"] = "Some unknown problem occured while proccessing save operation on ";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string ErrorMsg = ex.Message.ToString();//
                ErrorLogging.LogError(ex);
            }

            return(View(MonthlySubscriptionModel));
        }
示例#5
0
        public void CustomerWithSubscriptionThatIsCurrentThroughNextYearDoesNotGetCharged()
        {
            var subscription = new MonthlySubscription {
                PaidThroughYear = 2012, PaidThroughMonth = 8
            };
            var customer = new Customer {
                Subscription = subscription
            };
            var processor = TestableBillingProcessor.Create(customer);

            processor.ProcessMonth(2011, 8);

            processor.Charger.Verify(c => c.ChargeCustomer(customer), Times.Never);
        }
示例#6
0
        public void CustomerWhoIsCurrentAndDueToPayAndFailsOnceIsStillCurrent()
        {
            var subscription = new MonthlySubscription();
            var customer     = new Customer {
                Subscription = subscription
            };
            var processor = TestableBillingProcessor.Create(customer);

            processor.Charger.Setup(c => c.ChargeCustomer(It.IsAny <Customer>()))
            .Returns(false);


            processor.ProcessMonth(2011, 8);

            Assert.True(customer.Subscription.IsCurrent);
        }
示例#7
0
        public void CustomerWithSubscriptionThatIsExpiredGetsCharged()
        {
            var subscription = new MonthlySubscription()
            {
                PaidThroughYear = 2011, PaidThroughMonth = 8
            };
            var customer = new Customer()
            {
                Subscription = subscription
            };
            var processor = TestableBillingProcessor.Create(customer);

            processor.ProcessMonth(2011, 9);

            processor.Charger.Verify(c => c.ChargeCustomer(customer), Times.Once);
        }
示例#8
0
        public void CustomerWhoIsCurrentAndDueToPayAndFailsMaximumTimesIsNoLongerSubscribed()
        {
            var subscription = new MonthlySubscription();
            var customer     = new Customer {
                Subscription = subscription
            };
            var processor = TestableBillingProcessor.Create(customer);

            processor.Charger.Setup(c => c.ChargeCustomer(It.IsAny <Customer>()))
            .Returns(false);

            for (int i = 0; i < MonthlySubscription.MAX_FAILURES; i++)
            {
                processor.ProcessMonth(2011, 8);
            }

            Assert.False(customer.Subscription.IsCurrent);
        }
示例#9
0
        public void CustomerWhoIsSubscribedButFailsToPayOnceIsStillSubscribed()
        {
            var subscription = new MonthlySubscription()
            {
                PaidThroughYear = 2011, PaidThroughMonth = 8
            };
            var customer = new Customer()
            {
                Subscription = subscription
            };
            var processor = TestableBillingProcessor.Create(customer);

            processor.Charger.Setup(c => c.ChargeCustomer(It.IsAny <Customer>()))
            .Returns(false);

            processor.ProcessMonth(2011, 8);

            Assert.True(customer.Subscription.IsCurrent);
        }
        public void CustomerWithSubscriptionThatIsExpiredGetsCharged()
        {
            var subscription = new MonthlySubscription();
            var customer = new Customer { Subscription = subscription };
            var processor = TestableBillingProcessor.Create(customer);

            processor.ProcessMonth(2011, 8);

            processor.Charger.Verify(c => c.ChargeCustomer(customer), Times.Once);
        }
        public void CustomerWithSubscriptionThatIsCurrentThroughNextYearDoesNotGetCharged()
        {
            var subscription = new MonthlySubscription { PaidThroughYear = 2012, PaidThroughMonth = 8 };
            var customer = new Customer { Subscription = subscription };
            var processor = TestableBillingProcessor.Create(customer);

            processor.ProcessMonth(2011, 8);

            processor.Charger.Verify(c => c.ChargeCustomer(customer), Times.Never);
        }
        public void CustomerWhoIsCurrentAndDueToPayAndFailsOnceIsStillCurrent()
        {
            var subscription = new MonthlySubscription();
            var customer = new Customer { Subscription = subscription };
            var processor = TestableBillingProcessor.Create(customer);
            processor.Charger.Setup(c => c.ChargeCustomer(It.IsAny<Customer>()))
                             .Returns(false);

            processor.ProcessMonth(2011, 8);

            Assert.True(customer.Subscription.IsCurrent);
        }
        public void CustomerWhoIsCurrentAndDueToPayAndFailsMaximumTimesIsNoLongerSubscribed()
        {
            var subscription = new MonthlySubscription();
            var customer = new Customer { Subscription = subscription };
            var processor = TestableBillingProcessor.Create(customer);
            processor.Charger.Setup(c => c.ChargeCustomer(It.IsAny<Customer>()))
                             .Returns(false);

            for (int i = 0; i < MonthlySubscription.MAX_FAILURES; i++)
            {
                processor.ProcessMonth(2011, 8);
            }

            Assert.False(customer.Subscription.IsCurrent);
        }
示例#14
0
        void LoadMonthlySubsciption(DateTime dt)
        {
            db         = new nubebfsEntity();
            this.Title = $"Monthly Subscription [ {dt.ToString("MMMM - yyyy")} ]";
            dataMS     = db.MonthlySubscriptions.FirstOrDefault(x => x.date == dt);
            if (dataMS?.MonthEndClosed == true)
            {
                stpFileSelect.Visibility = Visibility.Collapsed;
            }
            else
            {
                stpFileSelect.Visibility = Visibility.Visible;
            }
            if (dataMS != null)
            {
                try
                {
                    var lstBank = dataMS.MonthlySubscriptionBanks.Select(x => new
                                                                         Model.MonthlySubsBank {
                        Id                   = x.Id,
                        BankName             = x.MASTERBANK.BANK_NAME,
                        NoOfMember           = x.MonthlySubscriptionMembers.Count(),
                        TotalAmount          = x.MonthlySubscriptionMembers.Sum(y => y.Amount),
                        ActiveAmount         = x.MonthlySubscriptionMembers.Where(y => y.MonthlySubscriptionMemberStatu?.Id == (int)AppLib.MonthlySubscriptionMemberStatus.Active).Sum(z => z.Amount),
                        DefaulterAmount      = x.MonthlySubscriptionMembers.Where(y => y.MonthlySubscriptionMemberStatu?.Id == (int)AppLib.MonthlySubscriptionMemberStatus.Defaulter).Sum(z => z.Amount),
                        StruckOffAmount      = x.MonthlySubscriptionMembers.Where(y => y.MonthlySubscriptionMemberStatu?.Id == (int)AppLib.MonthlySubscriptionMemberStatus.StruckOff).Sum(z => z.Amount),
                        ResignedAmount       = x.MonthlySubscriptionMembers.Where(y => y.MonthlySubscriptionMemberStatu?.Id == (int)AppLib.MonthlySubscriptionMemberStatus.Resigned).Sum(z => z.Amount),
                        SundryCreditorAmount = x.MonthlySubscriptionMembers.Where(y => y.MonthlySubscriptionMemberStatu?.Id == (int)AppLib.MonthlySubscriptionMemberStatus.SundryCreditor).Sum(z => z.Amount)
                    }).ToList();

                    var b = new Model.MonthlySubsBank
                    {
                        BankName             = "Total",
                        NoOfMember           = lstBank.Sum(x => x.NoOfMember),
                        TotalAmount          = lstBank.Sum(x => x.TotalAmount),
                        ActiveAmount         = lstBank.Sum(x => x.ActiveAmount),
                        DefaulterAmount      = lstBank.Sum(x => x.DefaulterAmount),
                        StruckOffAmount      = lstBank.Sum(x => x.StruckOffAmount),
                        ResignedAmount       = lstBank.Sum(x => x.ResignedAmount),
                        SundryCreditorAmount = lstBank.Sum(x => x.SundryCreditorAmount)
                    };
                    lstBank.Add(b);

                    dgvBank.ItemsSource = lstBank;
                    lblPaidMembers.Text = dataMS.MonthlySubscriptionBanks.Sum(x => x.MonthlySubscriptionMembers.Count()).ToString();
                    lblPaidAmount.Text  = dataMS.MonthlySubscriptionBanks.Sum(x => x.MonthlySubscriptionMembers.Sum(y => y.Amount)).ToString("N2");
                }
                catch (Exception ex)
                {
                }
                try
                {
                    var lstMemberStatus = db.MonthlySubscriptionMemberStatus.ToList().Select(x => new Model.MonthlySubsMemberStatus()
                    {
                        Description = x.Status,
                        NoOfMember  = x.MonthlySubscriptionMembers.Count(y => y.MonthlySubscriptionBank.MonthlySubscriptionId == dataMS.Id),
                        Amount      = x.MonthlySubscriptionMembers.Where(y => y.MonthlySubscriptionBank.MonthlySubscriptionId == dataMS.Id).Sum(z => z.Amount),
                    }).ToList();

                    var mStatus = new Model.MonthlySubsMemberStatus()
                    {
                        Description = "Total",
                        NoOfMember  = lstMemberStatus.Sum(x => x.NoOfMember),
                        Amount      = lstMemberStatus.Sum(x => x.Amount),
                    };
                    lstMemberStatus.Add(mStatus);
                    dgvMemberStatus.ItemsSource = lstMemberStatus;
                }
                catch (Exception ex)
                {
                }
                try
                {
                    var lstMemberMatching = db.MonthlySubscriptionMatchingTypes.ToList().Select(x => new Model.MonthlySubsApprovalStatus()
                    {
                        Description = x.Name,
                        NoOfMember  = x.MonthlySubscriptionMemberMatchingResults.Count(y => y.MonthlySubscriptionMember?.MonthlySubscriptionBank?.MonthlySubscriptionId == dataMS.Id),
                        Approved    = x.MonthlySubscriptionMemberMatchingResults.Count(y => y.MonthlySubscriptionMember?.MonthlySubscriptionBank?.MonthlySubscriptionId == dataMS.Id && y.ApprovedBy != null),
                        Pending     = x.MonthlySubscriptionMemberMatchingResults.Count(y => y.MonthlySubscriptionMember?.MonthlySubscriptionBank?.MonthlySubscriptionId == dataMS.Id && y.ApprovedBy == null),
                    }).ToList();

                    var aStatus = new Model.MonthlySubsApprovalStatus()
                    {
                        Description = "Total",
                        NoOfMember  = lstMemberMatching.Sum(x => x.NoOfMember),
                        Approved    = lstMemberMatching.Sum(x => x.Approved),
                        Pending     = lstMemberMatching.Sum(x => x.Pending),
                    };
                    lstMemberMatching.Add(aStatus);
                    dgvMemberMatching.ItemsSource = lstMemberMatching;
                    btnMonthEndClose.IsEnabled    = lstMemberMatching.Sum(x => x.Pending) == 0 && lstMemberMatching.Sum(x => x.NoOfMember) != 0;


                    var lstBankCurrent = dataMS.MonthlySubscriptionBanks.Select(x => new
                                                                                Model.MonthlySubsBank
                    {
                        Id          = x.Id,
                        BankName    = x.MASTERBANK.BANK_NAME,
                        NoOfMember  = x.MonthlySubscriptionMembers.Count(),
                        TotalAmount = x.MonthlySubscriptionMembers.Sum(y => y.Amount)
                    });

                    var dtPre           = dataMS.date.AddMonths(-1);
                    var lstBankPrevious = db.MonthlySubscriptionBanks.Where(x => x.MonthlySubscription.date == dtPre).Select(x => new
                                                                                                                             Model.MonthlySubsBank
                    {
                        Id          = x.Id,
                        BankName    = x.MASTERBANK.BANK_NAME,
                        NoOfMember  = x.MonthlySubscriptionMembers.Count(),
                        TotalAmount = x.MonthlySubscriptionMembers.Sum(y => y.Amount)
                    });

                    List <Model.VariationByBank> variationByBanks = new List <Model.VariationByBank>();
                    Model.VariationByBank        vb;
                    foreach (var d in lstBankCurrent)
                    {
                        var dPre = lstBankPrevious.FirstOrDefault(x => x.BankName == d.BankName);

                        vb = new Model.VariationByBank();
                        vb.MSBankIdPrevious = dPre?.Id ?? 0;
                        vb.MSBankIdCureent  = d.Id;

                        var lstNRIC_Current  = db.MonthlySubscriptionMembers.Where(x => x.MonthlySubscriptionBankId == vb.MSBankIdCureent).Select(x => x.NRIC).ToList();
                        var lstNRIC_Previous = db.MonthlySubscriptionMembers.Where(x => x.MonthlySubscriptionBankId == vb.MSBankIdPrevious).Select(x => x.NRIC).ToList();

                        var lstNewPaidNRIC = lstNRIC_Current.Except(lstNRIC_Previous);
                        var lstUnpaidNRIC  = lstNRIC_Previous.Except(lstNRIC_Current);



                        vb.BankName            = d.BankName;
                        vb.NoOfMemberCurrent   = d.NoOfMember;
                        vb.NoOfMemberPrevious  = dPre?.NoOfMember ?? 0;
                        vb.TotalAmountCurrent  = d.TotalAmount;
                        vb.TotalAmountPrevious = dPre?.TotalAmount ?? 0;
                        vb.Different           = vb.NoOfMemberCurrent - vb.NoOfMemberPrevious;
                        vb.NewPaid             = lstNewPaidNRIC.Count(); // getNotContainCount( lstNRIC_Previous, lstNRIC_Current);
                        vb.Unpaid      = lstUnpaidNRIC.Count();          // getNotContainCount(lstNRIC_Current, lstNRIC_Previous);
                        vb.NewPaidNRIC = string.Join(",", lstNewPaidNRIC);
                        vb.UnpaidNRIC  = string.Join(",", lstUnpaidNRIC);
                        if (vb.Different != 0 || vb.Unpaid != 0 || vb.NewPaid != 0)
                        {
                            variationByBanks.Add(vb);
                        }
                    }
                    vb                    = new Model.VariationByBank();
                    vb.BankName           = "Total";
                    vb.NoOfMemberCurrent  = variationByBanks.Sum(x => x.NoOfMemberCurrent);
                    vb.NoOfMemberPrevious = variationByBanks.Sum(x => x.NoOfMemberPrevious);
                    vb.Different          = variationByBanks.Sum(x => x.Different);
                    vb.Unpaid             = variationByBanks.Sum(x => x.Unpaid);
                    vb.NewPaid            = variationByBanks.Sum(x => x.NewPaid);
                    variationByBanks.Add(vb);
                    dgvBankVar.ItemsSource = variationByBanks;
                }
                catch (Exception ex)
                {
                }
            }
            else
            {
                dgvBank.ItemsSource           = null;
                dgvMemberStatus.ItemsSource   = null;
                dgvMemberMatching.ItemsSource = null;
                dgvBankVar.ItemsSource        = null;
                lblPaidAmount.Text            = "";
                lblPaidMembers.Text           = "";
            }
        }
示例#15
0
        private void BtnBrowse_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                var bank     = cbxBank.SelectedItem as MASTERBANK;
                var fileType = cbxFileType.SelectedItem as MonthlySubscriptonFileType;


                if (bank == null)
                {
                    MessageBox.Show("Select Bank");
                    cbxBank.Focus();
                }
                else if (fileType == null)
                {
                    MessageBox.Show("Select file type");
                    cbxFileType.Focus();
                }
                else if (cdrMonthlySubscription.SelectedDate == null)
                {
                    MessageBox.Show("Select Month");
                    cdrMonthlySubscription.Focus();
                }
                else
                {
                    OpenFileDialog ofd = new OpenFileDialog();

                    if (ofd.ShowDialog() == true)
                    {
                        var dt = cdrMonthlySubscription.SelectedDate.Value;
                        var ms = db.MonthlySubscriptions.FirstOrDefault(x => x.date == dt);
                        if (ms == null)
                        {
                            ms = new MonthlySubscription()
                            {
                                date = dt, MonthEndClosed = false
                            };
                            db.MonthlySubscriptions.Add(ms);
                        }

                        var msBank = ms.MonthlySubscriptionBanks.FirstOrDefault(x => x.BankCode == bank.BANK_CODE);
                        if (msBank == null)
                        {
                            msBank = new MonthlySubscriptionBank()
                            {
                                BankCode = bank.BANK_CODE
                            };
                            ms.MonthlySubscriptionBanks.Add(msBank);
                        }
                        else
                        {
                            MessageBox.Show($"{cbxBank.Text} is already done.\r\n delete old entry and retry If you need.");
                            return;
                        }

                        var msAttachment = msBank.MonthlySubscriptionBankAttachments.FirstOrDefault(x => x.MonthlySubscriptionFileTypeId == fileType.Id);
                        if (msAttachment == null)
                        {
                            msAttachment = new MonthlySubscriptionBankAttachment()
                            {
                                MonthlySubscriptionFileTypeId = fileType.Id
                            };
                            msBank.MonthlySubscriptionBankAttachments.Add(msAttachment);
                        }


                        msAttachment.FilePath    = ofd.FileName;
                        msAttachment.FileContent = File.ReadAllBytes(ofd.FileName);


                        if (fileType.Id == (int)AppLib.MonthlySubscriptionFileType.FromNUBE)
                        {
                            DataTable dataTable = new DataTable();
                            using (var con = new OleDbConnection(""))
                            {
                                string Import_FileName = ofd.FileName;
                                string sheetName       = "Sheet1";
                                string fileExtension   = System.IO.Path.GetExtension(Import_FileName);
                                if (fileExtension == ".xls")
                                {
                                    con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Import_FileName + ";" + "Extended Properties='Excel 8.0;HDR=YES;'";
                                }
                                if (fileExtension == ".xlsx")
                                {
                                    con.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Import_FileName + ";" + "Extended Properties='Excel 12.0 Xml;HDR=YES;'";
                                }
                                using (OleDbCommand comm = new OleDbCommand())
                                {
                                    comm.CommandText = "Select * from [" + sheetName + "$]";

                                    comm.Connection = con;

                                    using (OleDbDataAdapter da = new OleDbDataAdapter())
                                    {
                                        da.SelectCommand = comm;
                                        da.Fill(dataTable);
                                        for (var i = 0; i < dataTable.Rows.Count; i++)
                                        {
                                            var NRIC       = dataTable.Rows[i]["NRIC"].ToString();
                                            var MemberName = dataTable.Rows[i]["MemberName"].ToString();
                                            var Amount     = dataTable.Rows[i]["Amount"].ToString();
                                            if (String.IsNullOrWhiteSpace(NRIC))
                                            {
                                                continue;
                                            }
                                            var msMember = msBank.MonthlySubscriptionMembers.FirstOrDefault(x => x.NRIC == NRIC);
                                            if (msMember == null)
                                            {
                                                msMember = new MonthlySubscriptionMember()
                                                {
                                                    NRIC = NRIC, MonthlySubcriptionMemberStatusId = (int)AppLib.MonthlySubscriptionMemberStatus.SundryCreditor
                                                };
                                                msBank.MonthlySubscriptionMembers.Add(msMember);
                                            }

                                            msMember.MemberName = MemberName;
                                            msMember.Amount     = Convert.ToDecimal(Amount);
                                        }
                                    }
                                }
                            }
                        }
                        db.SaveChanges();
                        MessageBox.Show("Saved");
                        LoadMonthlySubsciption(cdrMonthlySubscription.SelectedDate.Value);
                    }
                }
            }catch (Exception ex) { MessageBox.Show(ex.Message); }
        }