// GET: /Organisation/Dashboard public async Task <ActionResult> Dashboard() { Organisation organisation = await db.Organisations.FindAsync(userContext.ItemId); if (organisation == null) { return(HttpNotFound()); } var model = new OrganisationDashboardViewModel(organisation); return(View(model)); }
// POST: /Organisation/Dashboard public async Task <ActionResult> Dashboard(OrganisationMembershipActionViewModel model) { Organisation organisation = await db.Organisations.FindAsync(userContext.ItemId); if (organisation == null) { return(HttpNotFound()); } if (ModelState.IsValid) { OrganisationProvider item = organisation.OrganisationProviders.FirstOrDefault(x => x.ProviderId == model.Id); if (model.Action != "switchto" && !Permission.HasPermission(false, true, Permission.PermissionName.CanManageOrganisationProviderMembership)) { model.Action = "notpermitted"; } switch (model.Action) { case "invite": if (item != null) { ViewBag.Message = AppGlobal.Language.GetText(this, "AlreadyAssociated", "This provider is already associated with your organisation."); break; } OrganisationProvider op = db.OrganisationProviders.Create(); op.OrganisationId = organisation.OrganisationId; op.ProviderId = model.Id; op.IsAccepted = false; op.IsRejected = false; op.CanOrganisationEditProvider = false; op.Reason = null; organisation.OrganisationProviders.Add(op); ProvisionUtilities.SendProviderMembershipEmail( db, Constants.EmailTemplates.ProviderInviteNotification, model.Id, userContext.ItemId.Value, null); ShowGenericSavedMessage(); break; case "remove": ProvisionUtilities.SendProviderMembershipEmail( db, Constants.EmailTemplates.ProviderRemovedFromOrganisation, model.Id, userContext.ItemId.Value, null); db.OrganisationProviders.Remove(item); ShowGenericSavedMessage(); break; case "withdraw": ProvisionUtilities.SendProviderMembershipEmail( db, Constants.EmailTemplates.ProviderInviteWithdrawn, model.Id, userContext.ItemId.Value, null); db.OrganisationProviders.Remove(item); ShowGenericSavedMessage(); break; case "switchto": if (Permission.HasPermission(false, true, Permission.PermissionName.CanViewAdministratorHomePage)) { new RecentProvisions(Permission.GetCurrentUserId()).Add("P" + model.Id, model.Name); } bool success = item != null && item.CanOrganisationEditProvider && UserContext.SetUserContext(db, UserContext.UserContextName.Provider, model.Id); if (!success) { ViewBag.Message = AppGlobal.Language.GetText(this, "UnableToSwitch", "Unable to switch to the selected provider."); } else { return(RedirectToAction("Dashboard", "Provider")); } break; default: ViewBag.Message = AppGlobal.Language.GetText(this, "NotPermitted", "Unable to perform that action."); break; } await db.SaveChangesAsync(); } // Something happened so return the model var viewModel = new OrganisationDashboardViewModel(organisation); return(View(viewModel)); }