private void ChangeSector(AdminChangeSectorViewModel viewModel, long organisationId) { var organisation = dataRepository.Get <Organisation>(organisationId); SectorTypes previousSector = organisation.SectorType; SectorTypes newSector = viewModel.NewSector.Value == NewSectorTypes.Private ? SectorTypes.Private : SectorTypes.Public; // Update the sector organisation.SectorType = newSector; // Remove SIC codes when company changes between sectors organisation.OrganisationSicCodes.Clear(); // Change snapshot date for all organisation scopes to match new sector organisation.OrganisationScopes.ForEach( scope => scope.SnapshotDate = organisation.SectorType.GetAccountingStartDate(scope.SnapshotDate.Year) ); // Change accounting date for all returns to match new sector organisation.Returns.ForEach( returnItem => returnItem.AccountingDate = organisation.SectorType.GetAccountingStartDate(returnItem.AccountingDate.Year) ); dataRepository.SaveChanges(); // Audit log auditLogger.AuditChangeToOrganisation( AuditedAction.AdminChangedOrganisationSector, organisation, new AdminChangeSectorAuditLogDetails { OldSector = previousSector, NewSector = newSector, Reason = viewModel.Reason }, User); }
public IActionResult ChangeSectorGet(long id) { var viewModel = new AdminChangeSectorViewModel(); UpdateAdminChangeSectorViewModelFromOrganisation(viewModel, id); viewModel.NewSector = viewModel.Organisation.SectorType == SectorTypes.Private ? NewSectorTypes.Private : NewSectorTypes.Public; return(View("ChangeSector", viewModel)); }
public IActionResult ChangeSectorPost(long id, AdminChangeSectorViewModel viewModel) { switch (viewModel.Action) { case ChangeOrganisationSectorViewModelActions.OfferNewSectorAndReason: return(OfferNewSectorAndReason(id, viewModel)); case ChangeOrganisationSectorViewModelActions.ConfirmSectorChange: return(ConfirmSectorChange(id, viewModel)); default: throw new ArgumentException("Unknown action in AdminOrganisationSectorController.ChangeSectorPost"); } }
private IActionResult OfferNewSectorAndReason(long id, AdminChangeSectorViewModel viewModel) { UpdateAdminChangeSectorViewModelFromOrganisation(viewModel, id); ValidateAdminChangeSectorViewModel(viewModel); // Check if new sector is same as original organisation sector var newSector = viewModel.NewSector == NewSectorTypes.Private ? SectorTypes.Private : SectorTypes.Public; if (newSector == viewModel.Organisation.SectorType) { viewModel.AddErrorFor( m => m.NewSector, "The organisation is already assigned to this sector." ); } if (viewModel.HasAnyErrors()) { return(View("ChangeSector", viewModel)); } return(View("ConfirmSectorChange", viewModel)); }
private void ValidateAdminChangeSectorViewModel(AdminChangeSectorViewModel viewModel) { viewModel.ParseAndValidateParameters(Request, m => m.NewSector); viewModel.ParseAndValidateParameters(Request, m => m.Reason); }
private void UpdateAdminChangeSectorViewModelFromOrganisation(AdminChangeSectorViewModel viewModel, long organisationId) { viewModel.Organisation = dataRepository.Get <Organisation>(organisationId); }
private IActionResult ConfirmSectorChange(long id, AdminChangeSectorViewModel viewModel) { ChangeSector(viewModel, id); return(RedirectToAction("ViewSectorHistory", "AdminOrganisationSector", new { id })); }