public async Task <ActionResult> EditSharedGovernor(int establishmentUrn, int governorId)
        {
            var governor = await _governorsReadService.GetGovernorAsync(governorId, User);

            var roleName = (await _cachedLookupService.GovernorRolesGetAllAsync()).Single(x => x.Id == governor.RoleId.Value).Name;

            var model = new EditSharedGovernorViewModel
            {
                Governor     = await SharedGovernorViewModel.MapFromGovernor(governor, establishmentUrn, _cachedLookupService),
                GovernorType = roleName
            };

            await _layoutHelper.PopulateLayoutProperties(model, establishmentUrn, null, User);

            return(View(model));
        }
        public async Task <ActionResult> EditSharedGovernor(EditSharedGovernorViewModel model)
        {
            if (ModelState.IsValid)
            {
                await _governorsWriteService.UpdateDatesAsync(model.Governor.Id, model.Governor.AppointmentStartDate.ToDateTime().Value, model.Governor.AppointmentEndDate.ToDateTime().Value, User);

                var url = $"{Url.RouteUrl("EstabDetails", new { id = model.Urn, saved = true })}#school-governance";

                return(Redirect(url));
            }

            var governor = await _governorsReadService.GetGovernorAsync(model.Governor.Id, User);

            var roleName = (await _cachedLookupService.GovernorRolesGetAllAsync()).Single(x => x.Id == governor.RoleId.Value).Name;

            model.Governor = await SharedGovernorViewModel.MapFromGovernor(governor, model.Urn.Value, _cachedLookupService);

            model.GovernorType = roleName;

            await _layoutHelper.PopulateLayoutProperties(model, model.Urn.Value, null, User);

            return(View(model));
        }