Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }