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 })); }
/// <summary> /// Prepares Accident Details View Model for Accident Details, EditFire and Edit Criminal Offence view /// </summary> /// <param name="id">Accident Id</param> /// <returns>Accident Details View Model instance</returns> public AccidentDetailsViewModel GetAccidentDetailsViewModel(long id) { var accidentFromDb = accidentRepository.Get(id); var accidentDetailsViewModel = mapper.Map <AccidentDetailsViewModel>(accidentFromDb); // victims list // no items in the list = there were no victims (not "no info available") var victimsFromDb = accidentFromDb.AccidentVictims; var accidentVictimsViewModel = new List <AccidentVictimViewModel>(); if (victimsFromDb.Count != 0) { foreach (var victim in victimsFromDb) { accidentVictimsViewModel.Add(mapper.Map <AccidentVictimViewModel>(victim)); } } accidentDetailsViewModel.AccidentVictimsViewModel = accidentVictimsViewModel; // address var accidentAddressFromDb = accidentFromDb.AccidentAddress; var addressViewModel = mapper.Map <AdressViewModel>(accidentAddressFromDb); accidentDetailsViewModel.AccidentAddressViewModel = addressViewModel; accidentDetailsViewModel.AccidentAddressText = addressViewModel == null ? Dictionaries.NotAvailable : $"г.{addressViewModel.City}, ул.{addressViewModel.Street}, {addressViewModel.HouseNumber}"; // Fire details var fireDetailFromDb = accidentFromDb.FireDetail; var fireDetailViewModel = mapper.Map <FireDetailViewModel>(fireDetailFromDb); if (fireDetailViewModel == null) { fireDetailViewModel = new FireDetailViewModel() { AccidentId = accidentFromDb.Id, FireCause = FireCauseEnum.NotAvailable, FireCauseText = Dictionaries.GetText <FireCauseEnum>(FireCauseEnum.NotAvailable), FireClass = FireClassEnum.NotAvailable, FireClassText = Dictionaries.GetText <FireClassEnum>(FireClassEnum.NotAvailable), }; } accidentDetailsViewModel.FireDetailViewModel = fireDetailViewModel; // Houses Destroyed in fire list // no items in the list = there were no destroyed houes (not "no info available") var housesDestroyedInFireFromDb = accidentFromDb.HousesDestroyedInFire; var housesDestroyedInFireViewModel = new List <HouseDestroyedInFireViewModel>(); if (housesDestroyedInFireFromDb.Count != 0) { foreach (var house in housesDestroyedInFireFromDb) { housesDestroyedInFireViewModel.Add(mapper.Map <HouseDestroyedInFireViewModel>(house)); } } accidentDetailsViewModel.HousesDestroyedInFireViewModel = housesDestroyedInFireViewModel; // Criminal Offence // Criminal offence articles var criminalArticlesFromDb = accidentFromDb.CriminalOffenceArticles; var criminalOffenceArticlesViewModel = new List <CriminalOffenceArticleViewModel>(); if (criminalArticlesFromDb.Count != 0) { foreach (var article in criminalArticlesFromDb) { var articleViewModel = mapper.Map <CriminalOffenceArticleViewModel>(article); criminalOffenceArticlesViewModel.Add(articleViewModel); } } accidentDetailsViewModel.CriminalOffenceArticlesViewModel = criminalOffenceArticlesViewModel; // Criminal offenders var offendersFromDb = accidentFromDb.CriminalOffenders; var accidentOffendersViewModel = new List <CriminalOffenderViewModel>(); if (offendersFromDb.Count != 0) { foreach (var offender in offendersFromDb) { accidentOffendersViewModel.Add(mapper.Map <CriminalOffenderViewModel>(offender)); } } accidentDetailsViewModel.CriminalOffendersViewModel = accidentOffendersViewModel; return(accidentDetailsViewModel); }