public async Task <ActionResult> Membership() { Provider provider = await db.Providers.FindAsync(userContext.ItemId); if (provider == null) { return(HttpNotFound()); } var model = new ProviderOrganisationsViewModel(provider); return(View(model)); }
public async Task <ActionResult> Membership(OrganisationMembershipActionViewModel model) { Provider provider = await db.Providers.FindAsync(userContext.ItemId); if (provider == null) { return(HttpNotFound()); } if (ModelState.IsValid) { OrganisationProvider item = provider.OrganisationProviders.FirstOrDefault(x => x.OrganisationId == model.Id); if (item == null) { return(HttpNotFound()); } switch (model.Action) { case "accept": item.IsAccepted = true; item.IsRejected = false; item.CanOrganisationEditProvider = model.Flag.HasValue && !model.Flag.Value; item.RespondedByUserId = Permission.GetCurrentUserId(); item.RespondedByDateTimeUtc = DateTime.UtcNow; ProvisionUtilities.SendOrganisationMembershipEmail( db, item.CanOrganisationEditProvider ? Constants.EmailTemplates.ProviderInviteAcceptedCanEdit : Constants.EmailTemplates.ProviderInviteAcceptedCannotEdit, userContext.ItemId.Value, model.Id, null); ShowGenericSavedMessage(); break; case "reject": item.IsAccepted = false; item.IsRejected = true; item.Reason = model.Reason; item.RespondedByUserId = Permission.GetCurrentUserId(); item.RespondedByDateTimeUtc = DateTime.UtcNow; ProvisionUtilities.SendOrganisationMembershipEmail( db, Constants.EmailTemplates.ProviderInviteRejected, userContext.ItemId.Value, model.Id, new List <EmailParameter> { new EmailParameter("%REASONS%", model.Reason) }); ShowGenericSavedMessage(); break; case "leave": item.IsAccepted = true; item.IsRejected = true; item.Reason = model.Reason; item.RespondedByUserId = Permission.GetCurrentUserId(); item.RespondedByDateTimeUtc = DateTime.UtcNow; ProvisionUtilities.SendOrganisationMembershipEmail( db, Constants.EmailTemplates.ProviderLeftOrganisation, userContext.ItemId.Value, model.Id, new List <EmailParameter> { new EmailParameter("%REASONS%", model.Reason) }); ShowGenericSavedMessage(); break; case "toggleorg": item.CanOrganisationEditProvider = model.Flag.HasValue && model.Flag.Value; ProvisionUtilities.SendOrganisationMembershipEmail( db, item.CanOrganisationEditProvider ? Constants.EmailTemplates.ProviderAllowedOrganisationToManageData : Constants.EmailTemplates.ProviderDisallowedOrganisationToManageData, userContext.ItemId.Value, model.Id, null); ShowGenericSavedMessage(); break; default: ViewBag.Message = AppGlobal.Language.GetText(this, "NotPermitted", "Unable to perform that action."); break; } await db.SaveChangesAsync(); } var viewModel = new ProviderOrganisationsViewModel(provider); return(View(viewModel)); }