Beispiel #1
0
        // 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));
        }
Beispiel #2
0
        // 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));
        }