Example #1
0
        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);
        }
Example #2
0
        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));
        }
Example #3
0
        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");
            }
        }
Example #4
0
        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));
        }
Example #5
0
 private void ValidateAdminChangeSectorViewModel(AdminChangeSectorViewModel viewModel)
 {
     viewModel.ParseAndValidateParameters(Request, m => m.NewSector);
     viewModel.ParseAndValidateParameters(Request, m => m.Reason);
 }
Example #6
0
 private void UpdateAdminChangeSectorViewModelFromOrganisation(AdminChangeSectorViewModel viewModel, long organisationId)
 {
     viewModel.Organisation = dataRepository.Get <Organisation>(organisationId);
 }
Example #7
0
 private IActionResult ConfirmSectorChange(long id, AdminChangeSectorViewModel viewModel)
 {
     ChangeSector(viewModel, id);
     return(RedirectToAction("ViewSectorHistory", "AdminOrganisationSector", new { id }));
 }