private void SaveChangesToSicCodes(AdminSicCodeUploadCheckViewModel viewModel) { foreach (SicCode sicCodeFromUser in viewModel.AddsEditsDeletesSet.ItemsToAdd) { var sicCode = new SicCode { SicCodeId = sicCodeFromUser.SicCodeId, SicSectionId = sicCodeFromUser.SicSectionId, Description = sicCodeFromUser.Description, Synonyms = sicCodeFromUser.Synonyms }; dataRepository.Insert(sicCode); } foreach (OldAndNew <SicCode> oldAndNew in viewModel.AddsEditsDeletesSet.ItemsToChange) { SicCode sicCode = dataRepository.Get <SicCode>(oldAndNew.Old.SicCodeId); sicCode.SicSectionId = oldAndNew.New.SicSectionId; sicCode.Description = oldAndNew.New.Description; sicCode.Synonyms = oldAndNew.New.Synonyms; } foreach (SicCode sicCodeFromUser in viewModel.AddsEditsDeletesSet.ItemsToDelete) { SicCode sicCode = dataRepository.Get <SicCode>(sicCodeFromUser.SicCodeId); dataRepository.Delete(sicCode); } dataRepository.SaveChanges(); }
public IActionResult SicCodeUploadPost(AdminFileUploadViewModel viewModel) { if (!ReferenceDataHelper.TryParseCsvFileWithHeadings( viewModel.File, new[] { "SicCodeId", "SicSectionId", "Description", "Synonyms" }, out List <SicCode> sicCodesFromUploadFile, out string errorMessage)) { viewModel.AddErrorFor(m => m.File, errorMessage); return(View("SicCodeUpload", viewModel)); } List <SicCode> sicCodesFromDatabase = dataRepository.GetAll <SicCode>().ToList(); var sicCodeUploadCheckViewModel = new AdminSicCodeUploadCheckViewModel { SerializedNewRecords = JsonConvert.SerializeObject(sicCodesFromUploadFile), AddsEditsDeletesSet = new AddsEditsDeletesSet <SicCode>( sicCodesFromDatabase, sicCodesFromUploadFile, s => s.SicCodeId, (s1, s2) => s1.SicSectionId == s2.SicSectionId && s1.Description == s2.Description && s1.Synonyms == s2.Synonyms, s => s.OrganisationSicCodes.Count > 0) }; return(View("SicCodeUploadCheck", sicCodeUploadCheckViewModel)); }
public IActionResult SicCodeUploadCheckPost(AdminSicCodeUploadCheckViewModel viewModel) { var newRecords = JsonConvert.DeserializeObject <List <SicCode> >(viewModel.SerializedNewRecords); List <SicCode> sicCodesFromDatabase = dataRepository.GetAll <SicCode>().ToList(); viewModel.AddsEditsDeletesSet = new AddsEditsDeletesSet <SicCode>( sicCodesFromDatabase, newRecords, s => s.SicCodeId, (s1, s2) => s1.SicSectionId == s2.SicSectionId && s1.Description == s2.Description && s1.Synonyms == s2.Synonyms, s => s.OrganisationSicCodes.Count > 0); viewModel.ParseAndValidateParameters(Request, m => m.Reason); if (viewModel.HasAnyErrors()) { return(View("SicCodeUploadCheck", viewModel)); } if (viewModel.AddsEditsDeletesSet.AnyItemsThatCannotBeDeleted) { throw new Exception("Some SIC codes are not allowed to be deleted, because they have OrganisationSicCodes associated with them"); } List <SicCode> existingRecords = dataRepository.GetAll <SicCode>().ToList(); auditLogger.AuditGeneralAction(AuditedAction.AdminUpdatedSicCodes, new { ExistingRecords = JsonConvert.SerializeObject(existingRecords.Select(GetSicCodeDetails)), NewRecords = JsonConvert.SerializeObject(newRecords.Select(GetSicCodeDetails)), Reason = viewModel.Reason }, User); SaveChangesToSicCodes(viewModel); return(View("UploadConfirmation", FileUploadType.SicCode)); }