Beispiel #1
0
        public IActionResult AddEditVictim(long?victimId, long accidentId, AccidentCategoryEnum accidentCategory)
        {
            AccidentVictimViewModel victimViewModel;
            var citizenSelectList    = lifeService.GetSelectListOfCitizensFromDb();
            var bodilyHarmSelectList = lifeService.GetSelectListFromEnum <BodilyHarmEnum>();

            if (victimId == null)
            {
                victimViewModel = new AccidentVictimViewModel
                {
                    AccidentId       = accidentId,
                    BodilyHarm       = BodilyHarmEnum.NotAvailable,
                    CitizenId        = null,
                    InitialCitizenId = null,
                    EconomicLoss     = null,
                };
            }
            else
            {
                var victimFromDb = victimRepository.Get((long)victimId);
                victimViewModel = mapper.Map <AccidentVictimViewModel>(victimFromDb);
            }

            victimViewModel.BodilyHarmList   = bodilyHarmSelectList;
            victimViewModel.CitizenList      = citizenSelectList;
            victimViewModel.AccidentCategory = accidentCategory;

            return(View("~/Views/Life/AddEditVictim.cshtml", victimViewModel));
        }
Beispiel #2
0
        public IActionResult AddEditVictim(AccidentVictimViewModel accidentVictimViewModel)
        {
            accidentVictimViewModel.CitizenList    = lifeService.GetSelectListOfCitizensFromDb();
            accidentVictimViewModel.BodilyHarmList = lifeService.GetSelectListFromEnum <BodilyHarmEnum>();

            // CitizenId is not valid
            if (ModelState[nameof(accidentVictimViewModel.CitizenId)].ValidationState == ModelValidationState.Invalid)
            {
                // remove all ModelStateEntries with key name different from "CitizenId" ->
                // we demonstrate only CitizenId error here
                ModelState.Keys.Where(key => key != nameof(accidentVictimViewModel.CitizenId)).
                ToList().Select(key => ModelState.Remove(key)).ToList();
                return(View("~/Views/Life/AddEditVictim.cshtml", accidentVictimViewModel));
            }

            // EconomicLoss numeric format is not valid (though the user attempted to enter something)
            if (!ModelState.IsValid && ModelState[nameof(accidentVictimViewModel.EconomicLoss)].AttemptedValue != String.Empty)
            {
                return(View("~/Views/Life/AddEditVictim.cshtml", accidentVictimViewModel));
            }

            // validation for combination of properties
            if ((accidentVictimViewModel.EconomicLoss == null || accidentVictimViewModel.EconomicLoss == 0) &&
                (accidentVictimViewModel.BodilyHarm == BodilyHarmEnum.None ||
                 accidentVictimViewModel.BodilyHarm == BodilyHarmEnum.NotAvailable))
            {
                ModelState.Clear();
                ModelState.AddModelError(String.Empty, "Чтобы человек считался потерпевшим, у него должны быть телесные повреждения или экономический ущерб");;
                return(View("~/Views/Life/AddEditVictim.cshtml", accidentVictimViewModel));
            }


            var accidentVictim = mapper.Map <AccidentVictim>(accidentVictimViewModel);
            var citizenUser    = citizenUserRepository.Get((long)accidentVictimViewModel.CitizenId);

            accidentVictim.Victim = citizenUser;
            var accident = accidentRepository.Get(accidentVictimViewModel.AccidentId);

            accidentVictim.Accident = accident;

            victimRepository.Save(accidentVictim);
            return(RedirectToAction(nameof(EditFire), new { id = accidentVictimViewModel.AccidentId }));
        }