public IActionResult Create(InsurerRiskOrBonus irb)
        {
            var categories = db.Category.ToList();

            ViewBag.Categories = categories;
            var risksAndBonuses = db.RisksOrBonuses.ToList();

            ViewBag.RisksOrBonuses = risksAndBonuses;
            if (ModelState.IsValid && irb.RiskOrBonusId != 0)
            {
                var userId           = GetCurrentUserAsync().Result.Id;
                var insurer          = db.Insurers.FirstOrDefault(i => i.ApplicationUserId == userId);
                var risk             = risksAndBonuses.FirstOrDefault(r => r.Id == irb.RiskOrBonusId);
                var riskHasBeenAdded =
                    db.InsurersRisksOrBonuses.FirstOrDefault(i => i.RiskOrBonusId == irb.RiskOrBonusId && i.InsurerId == insurer.Id);
                if (riskHasBeenAdded != null)
                {
                    ModelState.AddModelError(string.Empty, "This risk has already been added!");
                    return(View(irb));
                }
                var insuranceRiskOrBonus = new InsurerRiskOrBonus()
                {
                    Insurer            = insurer,
                    InsurerId          = insurer.Id,
                    RiskOrBonus        = risk,
                    RiskOrBonusId      = risk.Id,
                    TariffNumberChange = irb.TariffNumberChange
                };
                db.InsurersRisksOrBonuses.Add(insuranceRiskOrBonus);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(irb));
        }
        public IActionResult Edit(InsurerRiskOrBonus irb)
        {
            var risksAndBonuses = db.RisksOrBonuses.FirstOrDefault(rob => rob.Id == irb.RiskOrBonusId);

            if (risksAndBonuses != null)
            {
                ViewBag.RisksOrBonuses = risksAndBonuses.Nomenclature;
                var categories = db.Category.FirstOrDefault(c => c.Id == risksAndBonuses.CategoryId);
                ViewBag.Categories = categories.Name;
            }

            var insurerRiskOrBonusToEdit = db.InsurersRisksOrBonuses.FirstOrDefault(i =>
                                                                                    i.InsurerId == irb.InsurerId && i.RiskOrBonusId == irb.RiskOrBonusId);

            if (irb.TariffNumberChange != insurerRiskOrBonusToEdit.TariffNumberChange)
            {
                if (irb.TariffNumberChange != 0)
                {
                    insurerRiskOrBonusToEdit.TariffNumberChange = irb.TariffNumberChange;
                    db.SaveChanges();
                    return(RedirectToAction("Index"));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Tariff number cannot be 0!");
                }
            }

            return(View(insurerRiskOrBonusToEdit));
        }
        public IActionResult Delete(InsurerRiskOrBonus irb)
        {
            var insurerRiskOrBonusToDelete = db.InsurersRisksOrBonuses.FirstOrDefault(i =>
                                                                                      i.InsurerId == irb.InsurerId && i.RiskOrBonusId == irb.RiskOrBonusId);

            db.Remove(insurerRiskOrBonusToDelete);
            db.SaveChanges();

            return(RedirectToAction("Index"));
        }
        public IActionResult Details(InsurerRiskOrBonus irb, int?page)
        {
            int pageNumber = (page ?? 1);
            var insurers   = db.Insurers.FirstOrDefault(i => i.Id == irb.InsurerId);

            ViewBag.Insurers = insurers;
            var risks = db.RisksOrBonuses.OrderBy(r => r.Nomenclature).ToList();

            ViewBag.Risks = risks;
            var insurersRisksOrBonuses = db.InsurersRisksOrBonuses.Where(i =>
                                                                         i.InsurerId == irb.InsurerId).ToList();

            ViewBag.InsurerWithRisksAndBonuses = insurersRisksOrBonuses;
            int pageSize = 20;

            return(View(insurersRisksOrBonuses.ToPagedList(pageNumber, pageSize)));
        }