// POST: api/ClaimApi
        public HttpResponseMessage Post([FromBody] ClaimModel model)
        {
            try
            {
                model.StatusId = AttributeProviderSvc.GetClaimStatusIdFromName("new");

                var entity = AutoMapper.Mapper.Map <Claim>(model);
                Uow.Claims.Add(entity);
                Uow.SaveChanges();

                if (string.IsNullOrEmpty(model.ReturnUrl))
                {
                    //return RedirectToAction("Index");
                    return(Request.CreateResponse(HttpStatusCode.OK, new { returnUrl = "Index" }));
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, new { returnUrl = model.ReturnUrl }));
                    //return Redirect(model.ReturnUrl);
                }
            }
            catch
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
                //return View();
            }
        }
Example #2
0
        public ActionResult CancelPolicy(int?id)
        {
            try
            {
                if (id == null)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                var entity = Uow.Policies.GetById((int)id);
                if (entity == null)
                {
                    return(HttpNotFound());
                }

                entity.StatusId = AttributeProviderSvc.GetPolicyStatusIdFromName("cancelled");
                Uow.Policies.Update(entity);
                Uow.SaveChanges();

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                LoggingSvc.LogError(ex);
                return(RedirectToAction("Details", new { id = id }));
            }
        }
Example #3
0
        public ActionResult Edit(int id, PolicyModel model)
        {
            try
            {
                if (ModelState.IsValid == false)
                {
                    PolicyDetailModel policyDetailModel = GetPolicyDetailModel(id);
                    return(View(policyDetailModel));
                }

                model.StatusId = AttributeProviderSvc.GetPolicyStatusIdFromName(model.StatusName);

                var entity = AutoMapper.Mapper.Map <Policy>(model);
                Uow.Policies.Update(entity);
                Uow.SaveChanges();

                if (string.IsNullOrEmpty(model.ReturnUrl) == false)
                {
                    return(Redirect(model.ReturnUrl));
                }

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                PolicyDetailModel policyDetailModel = GetPolicyDetailModel(id);
                return(View(policyDetailModel));
            }
        }
Example #4
0
        public ActionResult RenewPolicy(PolicyModel model)
        {
            try
            {
                var origEntity = Uow.Policies.GetById(model.Id);
                var entity     = AutoMapper.Mapper.Map <Policy>(model);

                entity.Id = 0;
                entity.RenewalPolicyNumber = origEntity.PolicyNumber;
                entity.DateIssued          = DateTime.Now;

                entity.StatusId     = AttributeProviderSvc.GetPolicyStatusIdFromName("active");
                origEntity.StatusId = AttributeProviderSvc.GetPolicyStatusIdFromName("expired");

                Uow.Policies.Add(entity);
                Uow.Policies.Update(origEntity);
                Uow.SaveChanges();

                return(RedirectToAction("Details", new { id = entity.Id }));
            }
            catch (Exception ex)
            {
                LoggingSvc.LogError(ex);
                return(RedirectToAction("Details", new { id = model.Id }));
            }
        }
Example #5
0
        public ActionResult Edit(SoaModel model)
        {
            try
            {
                var invoiceList = Uow.Invoices.GetAll()
                                  .Where(i => i.Policy.ClientId == model.ClientId)
                                  .Where(i => i.Policy.InsuranceProviderId == model.InsuranceProviderId)
                                  .Where(i => i.Status.Name.ToLower() == "unpaid")
                                  .Where(i => i.IssueDate < model.IssueDate)
                                  .ToList();

                var tmpEntity = Uow.Soas.GetById(model.Id);

                // amount can only be recomputed if unpaid
                model.StatusName = AttributeProviderSvc.GetSoaStatusNameFromId(model.StatusId);

                if (model.StatusName.ToLower() == "unpaid")
                {
                    model.TotalAmountDue = invoiceList.Select(i => i.TotalAmountDue).Sum();
                }
                else
                {
                    model.TotalAmountDue = tmpEntity.TotalAmountDue;
                }

                Uow.Soas.Detach(tmpEntity);

                var entity = AutoMapper.Mapper.Map <Soa>(model);

                // EDWIN
                entity.StartDate = tmpEntity.StartDate;
                // EDWIN END

                Uow.Soas.Update(entity);

                LogEdit(entity);

                // if SOA is marked as paid, mark corresponding invoices as paid as well
                if (model.StatusName.ToLower() == "paid")
                {
                    foreach (var invoice in invoiceList)
                    {
                        invoice.StatusId = AttributeProviderSvc.GetInvoiceStatusIdFromName("paid");
                        invoice.PaidDate = DateTime.Now;
                        Uow.Invoices.Update(invoice);
                        LogInvoiceEdit(invoice);
                    }
                }

                Uow.SaveChanges();

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                return(RedirectToAction("Index", new { error = "Something went wrong!" }));
            }
        }
Example #6
0
        // GET: DefaultRebate/Edit/5
        public ActionResult Edit(int id)
        {
            var vm = Uow.DefaultRebates.GetAll()
                     .Where(d => d.Id == id)
                     .ProjectTo <DefaultRebateModel>()
                     .FirstOrDefault();

            vm.CompanyName    = AttributeProviderSvc.GetCompanyNameFromId(vm.InsuranceProviderId);
            vm.PolicyTypeName = AttributeProviderSvc.GetPolicyTypeNameFromId(vm.PolicyTypeId);

            return(View(vm));
        }
Example #7
0
        // GET: Soa
        public ActionResult Index(string error)
        {
            var unpaidStatusId = AttributeProviderSvc.GetInvoiceStatusIdFromName("unpaid");

            var list = Uow.Soas.GetAll()
                       .OrderBy(s => s.StatusId)
                       .ProjectTo <SoaModel>(new { invoiceStatus = unpaidStatusId })
                       .ToList();

            foreach (var item in list)
            {
                if (item.IsOrganization)
                {
                    item.ClientName = item.OrganizationName;
                }
            }

            List <ExistingClientsViewModel> clients;

            clients = Uow.Clients.GetAll()
                      .Where(c => c.Policies.Count() != 0)
                      .ProjectTo <ExistingClientsViewModel>().ToList();
            foreach (var item in clients)
            {
                if (item.IsOrganization)
                {
                    item.ClientName = item.OrganizationName;
                }
            }
            List <SoaStatus> statuses;

            statuses = Uow.SoaStatuses.GetAll().ToList();

            var vm = new SoaIndexModel
            {
                SoaList   = list,
                HasError  = string.IsNullOrEmpty(error) == false,
                Error     = error,
                Clients   = clients.OrderBy(c => c.ClientName).ToList(),
                Companies = ListProviderSvc.GetInsuranceProviders(),
                Statuses  = statuses
            };

            return(View(vm));
        }
Example #8
0
        public ActionResult Create(InvoiceModel model)
        {
            try
            {
                if (ModelState.IsValid == false)
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }

                model.StatusId = AttributeProviderSvc.GetInvoiceStatusIdFromName("pending");;

                var entity = AutoMapper.Mapper.Map <Invoice>(model);
                Uow.Invoices.Add(entity);
                Uow.SaveChanges();

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                LoggingSvc.LogError(ex);
                return(View());
            }
        }
Example #9
0
        public ActionResult Edit(int id, DefaultRebateModel model)
        {
            try
            {
                var entity = AutoMapper.Mapper.Map <DefaultRebate>(model);
                Uow.DefaultRebates.Update(entity);
                Uow.SaveChanges();

                return(RedirectToAction("Index"));
            }
            catch
            {
                var vm = Uow.DefaultRebates.GetAll()
                         .Where(d => d.Id == id)
                         .ProjectTo <DefaultRebateModel>()
                         .FirstOrDefault();

                vm.CompanyName    = AttributeProviderSvc.GetCompanyNameFromId(vm.InsuranceProviderId);
                vm.PolicyTypeName = AttributeProviderSvc.GetPolicyTypeNameFromId(vm.PolicyTypeId);

                return(View(vm));
            }
        }
Example #10
0
        public ActionResult Create(ClaimModel model)
        {
            try
            {
                model.StatusId = AttributeProviderSvc.GetClaimStatusIdFromName("new");

                var entity = AutoMapper.Mapper.Map <Claim>(model);
                Uow.Claims.Add(entity);
                Uow.SaveChanges();

                if (string.IsNullOrEmpty(model.ReturnUrl))
                {
                    return(RedirectToAction("Index"));
                }
                else
                {
                    return(Redirect(model.ReturnUrl));
                }
            }
            catch
            {
                return(View());
            }
        }
Example #11
0
        public ActionResult InvoiceAction(IList <InvoiceActionViewModel> list)
        {
            int statusId;

            if (list == null || list.Count <= 0)
            {
                return(RedirectToAction("Index", "Invoice"));
            }

            if (list[0].IsApprove)
            {
                statusId = AttributeProviderSvc.GetInvoiceStatusIdFromName("approved");
            }
            else
            {
                statusId = AttributeProviderSvc.GetInvoiceStatusIdFromName("rejected");
            }


            foreach (var item in list)
            {
                if (item.IsSelected)
                {
                    var entity = Uow.Invoices.GetById(item.InvoiceId);
                    if (entity != null)
                    {
                        entity.StatusId = statusId;
                        Uow.Invoices.Update(entity);
                    }
                }
            }

            Uow.SaveChanges();

            return(RedirectToAction("Index", "Invoice"));
        }
Example #12
0
        // POST: api/SoaApi
        public HttpResponseMessage Post([FromBody] SoaModel model)
        {
            try
            {
                var prevSoa = Uow.Soas.GetAll()
                              .Where(s => s.ClientId == model.ClientId &&
                                     s.InsuranceProviderId == model.InsuranceProviderId &&
                                     s.Status.Name.ToLower() == "unpaid")
                              .FirstOrDefault();
                if (prevSoa != null)
                {
                    prevSoa.StatusId = AttributeProviderSvc.GetSoaStatusIdFromName("closed");
                    Uow.Soas.Update(prevSoa);
                    //Uow.SaveChanges();
                    LogEdit(prevSoa);
                }

                // To include time in Issue Date for checking against Invoice list
                DateTime dateTimeNow = DateTime.Now;
                if ((model.IssueDate.Year == dateTimeNow.Year) &&
                    (model.IssueDate.Month == dateTimeNow.Month) &&
                    (model.IssueDate.Day == dateTimeNow.Day))
                {
                    model.IssueDate = dateTimeNow;
                }

                // EDWIN
                var list = Uow.Invoices.GetAll()
                           .Where(i => i.Policy.ClientId == model.ClientId &&
                                  i.Policy.InsuranceProviderId == model.InsuranceProviderId &&
                                  i.Status.Name.ToLower() == "unpaid" &&
                                  i.IssueDate < model.IssueDate)
                           .OrderBy(i => i.IssueDate)
                           .Select(i => new { TotalAmountDue = i.TotalAmountDue, InvoiceIssueDate = i.IssueDate })
                           .ToList();
                model.TotalAmountDue = list.Sum(i => i.TotalAmountDue);

                if (model.TotalAmountDue <= 0)
                {
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, new { errorMessage = "Unable to create SOA record; Invoice not yet approved or sent to client" }));
                }
                // EDWIN END

                model.StatusId = AttributeProviderSvc.GetSoaStatusIdFromName("unpaid");

                var entity = AutoMapper.Mapper.Map <Soa>(model);
                // EDWIN
                var firstInvoice = list.FirstOrDefault();
                if (firstInvoice != null)
                {
                    entity.StartDate = firstInvoice.InvoiceIssueDate;
                }
                else
                {
                    entity.StartDate = DateTime.Now;
                }
                // EDWIN END

                Uow.Soas.Add(entity);
                Uow.SaveChanges();

                LogAdd(entity);

                return(Request.CreateResponse(HttpStatusCode.OK));
            }
            catch (Exception)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest));
            }
        }
Example #13
0
        private ReportIndexModel CompTypeYearReport(ReportIndexModel vm)
        {
            vm.CompanyName    = AttributeProviderSvc.GetCompanyNameFromId(vm.InsuranceProviderId);
            vm.PolicyTypeName = AttributeProviderSvc.GetPolicyTypeNameFromId(vm.PolicyTypeId);
            vm.ReportSums     = new ReportSumsModel {
            };

            var list       = new List <ReportGroupedViewModel>();
            var monthQuery = Uow.Invoices.GetAll()
                             .Include(i => i.Particulars.Select(p => p.ParticularType))
                             .Include(i => i.Policy.Client)
                             .Include(i => i.Policy.Agent)
                             .Where(i => i.Policy.InsuranceProviderId == vm.InsuranceProviderId &&
                                    i.Policy.PolicyTypeId == vm.PolicyTypeId &&
                                    i.Status.Name.ToUpper() == "PAID" &&
                                    (i.PaidDate).Year == vm.Year)
                             .ToList()
                             .GroupBy(i => (i.PaidDate).Month);

            foreach (var invoiceGroup in monthQuery)
            {
                var reportList  = new List <ReportViewModel>();
                var invoiceList = invoiceGroup.ToList();
                foreach (var invoice in invoiceList)
                {
                    var reportRow = AutoMapper.Mapper.Map <ReportViewModel>(invoice);

                    if (reportRow.IsOrganization)
                    {
                        reportRow.ClientName = reportRow.OrganizationName;
                    }

                    reportRow.PremiumComponents = new PremiumComponents
                    {
                        Total = invoice.Particulars
                                .Where(p => p.ParticularType.Name == "Premium")
                                .FirstOrDefault()
                                .ParticularAmount
                    };
                    reportRow.TaxComponents = new TaxComponents
                    {
                        Total = invoice.Particulars
                                .Where(p => p.ParticularType.Name != "Premium")
                                .Select(p => p.ParticularAmount)
                                .Sum()
                    };
                    var dstItem = invoice.Particulars
                                  .Where(p => p.ParticularType.Name == "Documentary Stamp Tax (DST)")
                                  .FirstOrDefault();
                    if (dstItem != null)
                    {
                        reportRow.TaxComponents.Dst = dstItem.ParticularAmount;
                    }
                    var vatItem = invoice.Particulars
                                  .Where(p => p.ParticularType.Name == "Value-Added Tax (VAT)")
                                  .FirstOrDefault();
                    if (vatItem != null)
                    {
                        reportRow.TaxComponents.Vat = vatItem.ParticularAmount;
                    }
                    var lgtItem = invoice.Particulars
                                  .Where(p => p.ParticularType.Name == "Local Government Tax (LGT)")
                                  .FirstOrDefault();
                    if (lgtItem != null)
                    {
                        reportRow.TaxComponents.Lgt = lgtItem.ParticularAmount;
                    }
                    var axItem = invoice.Particulars
                                 .Where(p => p.ParticularType.Name == "AX")
                                 .FirstOrDefault();
                    if (axItem != null)
                    {
                        reportRow.TaxComponents.Ax = axItem.ParticularAmount;
                    }
                    var rcharItem = invoice.Particulars
                                    .Where(p => p.ParticularType.Name == "R CHAR")
                                    .FirstOrDefault();
                    if (rcharItem != null)
                    {
                        reportRow.TaxComponents.Rchar = rcharItem.ParticularAmount;
                    }
                    var notarialFeeItem = invoice.Particulars
                                          .Where(p => p.ParticularType.Name == "Notarial Fee")
                                          .FirstOrDefault();
                    if (notarialFeeItem != null)
                    {
                        reportRow.TaxComponents.NotarialFee = notarialFeeItem.ParticularAmount;
                    }
                    var otherFeesItem = invoice.Particulars
                                        .Where(p => p.ParticularType.Name == "Other Fees")
                                        .FirstOrDefault();
                    if (otherFeesItem != null)
                    {
                        reportRow.TaxComponents.OtherFees = otherFeesItem.ParticularAmount;
                    }
                    var fstItem = invoice.Particulars
                                  .Where(p => p.ParticularType.Name == "Fire Service Tax (FST)")
                                  .FirstOrDefault();
                    if (fstItem != null)
                    {
                        reportRow.TaxComponents.Fst = fstItem.ParticularAmount;
                    }
                    var premiumTaxItem = invoice.Particulars
                                         .Where(p => p.ParticularType.Name == "Premium Tax")
                                         .FirstOrDefault();
                    if (premiumTaxItem != null)
                    {
                        reportRow.TaxComponents.PremiumTax = premiumTaxItem.ParticularAmount;
                    }
                    var municipalTaxItem = invoice.Particulars
                                           .Where(p => p.ParticularType.Name == "Municipal Tax")
                                           .FirstOrDefault();
                    if (municipalTaxItem != null)
                    {
                        reportRow.TaxComponents.MunicipalTax = municipalTaxItem.ParticularAmount;
                    }

                    reportRow.SubAgentComponents = new SubAgentComponents
                    {
                        RebateAmount = invoice.Policy.Premium * (decimal)invoice.Rebate
                    };
                    reportRow.PaymentComponents = new PaymentComponents
                    {
                        AmountPaid            = invoice.AmountPaid,
                        PaidDate              = invoice.PaidDate,
                        OfficialReceiptNumber = invoice.ORNumber
                    };
                    if (invoice.HasEWT)
                    {
                        reportRow.PaymentComponents.PrepaidTaxEwt = (invoice.AmountPaid * 0.02M);
                        reportRow.PaymentComponents.Difference    = reportRow.PaymentComponents.PrepaidTaxEwt;
                    }
                    reportRow.CommissionComponents = new CommissionComponents
                    {
                        TotalCommission = invoice.Policy.Commission
                    };

                    reportList.Add(reportRow);

                    //For bottom-row totals
                    vm.ReportSums.SumPremiumOdExcess           += reportRow.PremiumComponents.OdExcess;
                    vm.ReportSums.SumPremiumComplTpl           += reportRow.PremiumComponents.ComplTpl;
                    vm.ReportSums.SumPremiumCgl                += reportRow.PremiumComponents.Cgl;
                    vm.ReportSums.SumPremiumPersonalAccident   += reportRow.PremiumComponents.PersonalAccident;
                    vm.ReportSums.SumPremiumAog                += reportRow.PremiumComponents.Aog;
                    vm.ReportSums.SumPremiumContractorsAllRisk += reportRow.PremiumComponents.ContractorsAllRisk;
                    vm.ReportSums.SumPremiumFire               += reportRow.PremiumComponents.Fire;
                    vm.ReportSums.SumPremiumAlliedPeril        += reportRow.PremiumComponents.AlliedPeril;
                    vm.ReportSums.SumPremiumBurgMoneySec       += reportRow.PremiumComponents.BurgMoneySec;
                    vm.ReportSums.SumPremiumPlateGlass         += reportRow.PremiumComponents.PlateGlass;
                    vm.ReportSums.SumPremiumRsmd               += reportRow.PremiumComponents.Rsmd;
                    vm.ReportSums.SumPremiumTotal              += reportRow.PremiumComponents.Total;
                    vm.ReportSums.SumTaxDst          += reportRow.TaxComponents.Dst;
                    vm.ReportSums.SumTaxVat          += reportRow.TaxComponents.Vat;
                    vm.ReportSums.SumTaxLgt          += reportRow.TaxComponents.Lgt;
                    vm.ReportSums.SumTaxAx           += reportRow.TaxComponents.Ax;
                    vm.ReportSums.SumTaxRchar        += reportRow.TaxComponents.Rchar;
                    vm.ReportSums.SumTaxNotarialFee  += reportRow.TaxComponents.NotarialFee;
                    vm.ReportSums.SumTaxOtherFees    += reportRow.TaxComponents.OtherFees;
                    vm.ReportSums.SumTaxFst          += reportRow.TaxComponents.Fst;
                    vm.ReportSums.SumTaxPremiumTax   += reportRow.TaxComponents.PremiumTax;
                    vm.ReportSums.SumTaxMunicipalTax += reportRow.TaxComponents.MunicipalTax;
                    vm.ReportSums.SumTaxTotal        += reportRow.TaxComponents.Total;
                    vm.ReportSums.SumGrandTotal      += reportRow.GrandTotal;
                    vm.ReportSums.SumAgentRebate     += reportRow.SubAgentComponents.RebateAmount;
                }

                list.Add(new ReportGroupedViewModel
                {
                    Month      = invoiceGroup.Key,
                    ReportList = reportList.OrderBy(i => i.PaidDate).ToList()
                });
            }
            vm.InvoiceByMonthList = list;

            return(vm);
        }
Example #14
0
        public ActionResult Create(SoaModel model)
        {
            try
            {
                var prevSoa = Uow.Soas.GetAll()
                              .Where(s => s.ClientId == model.ClientId &&
                                     s.InsuranceProviderId == model.InsuranceProviderId &&
                                     s.Status.Name.ToLower() == "unpaid")
                              .FirstOrDefault();
                if (prevSoa != null)
                {
                    prevSoa.StatusId = AttributeProviderSvc.GetSoaStatusIdFromName("closed");
                    Uow.Soas.Update(prevSoa);
                    Uow.SaveChanges();
                    LogEdit(prevSoa);
                }

                // To include time in Issue Date for checking against Invoice list
                DateTime dateTimeNow = DateTime.Now;
                if ((model.IssueDate.Year == dateTimeNow.Year) &&
                    (model.IssueDate.Month == dateTimeNow.Month) &&
                    (model.IssueDate.Day == dateTimeNow.Day))
                {
                    model.IssueDate = dateTimeNow;
                }

                // EDWIN
                var list = Uow.Invoices.GetAll()
                           .Where(i => i.Policy.ClientId == model.ClientId &&
                                  i.Policy.InsuranceProviderId == model.InsuranceProviderId &&
                                  i.Status.Name.ToLower() == "unpaid" &&
                                  i.IssueDate < model.IssueDate)
                           .OrderBy(i => i.IssueDate)
                           .Select(i => new { TotalAmountDue = i.TotalAmountDue, InvoiceIssueDate = i.IssueDate })
                           .ToList();
                model.TotalAmountDue = list.Sum(i => i.TotalAmountDue);
                // EDWIN END

                model.StatusId = AttributeProviderSvc.GetSoaStatusIdFromName("unpaid");

                var entity = AutoMapper.Mapper.Map <Soa>(model);
                // EDWIN
                var firstInvoice = list.FirstOrDefault();
                if (firstInvoice != null)
                {
                    entity.StartDate = firstInvoice.InvoiceIssueDate;
                }
                else
                {
                    entity.StartDate = DateTime.Now;
                }
                // EDWIN END

                Uow.Soas.Add(entity);
                Uow.SaveChanges();

                LogAdd(entity);

                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                return(RedirectToAction("Index", new { error = ex.Message }));
            }
        }