예제 #1
0
        public ActionResult RemoveResource(OrganizationHomeViewModel model)
        {
            ModelState.RemoveErrorsExcept(nameof(OrganizationHomeViewModel.RemoveResourceId));
            if (!ModelState.IsValid)
            {
                return(View("Home", CreateHomeViewModel(model)));
            }

            try
            {
                // Check access
                ConfirmAccess(model.OrganizationId);

                // Check the resource ID
                var resources = AdminService.GetResourceCheckinsForOrganization(model.OrganizationId);
                var resource  = resources.FirstOrDefault(r => r.ResourceId == model.RemoveResourceId);
                if (resource == null)
                {
                    throw new ArgumentException("The specified resource does not belong to this Organization.");
                }

                // Ok
                DisasterService.RemoveResourceById(resource.ResourceId);

                return(Redirect("Home/" + model.OrganizationId));
            }
            catch (ArgumentException ex)
            {
                ModelState.AddModelError("", ex.Message);
            }

            return(View("Home", CreateHomeViewModel(model.OrganizationId)));
        }
예제 #2
0
        public ActionResult CheckinResource(OrganizationHomeViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View("Home", CreateHomeViewModel(model)));
            }

            try
            {
                // Check access
                var person = GetCurrentVolunteer();
                ConfirmAccess(model.OrganizationId);

                // Ok
                model.Organization = OrganizationService.Get(model.OrganizationId);
                DisasterService.AddResourceCheckIn(model.Organization, person, model.ResourceDisasterId, model.ResourceDescription,
                                                   model.ResourceQuantity, model.ResourceTypeId, model.ResourceStartDate, model.ResourceEndDate, model.ResourceLocation);

                return(Redirect("Home/" + model.OrganizationId));
            }
            catch (ArgumentException ex)
            {
                ModelState.AddModelError("", ex.Message);
            }

            return(View("Home", CreateHomeViewModel(model)));
        }
예제 #3
0
        OrganizationHomeViewModel CreateHomeViewModel(OrganizationHomeViewModel inputModel)
        {
            // Organization
            int          id  = inputModel.OrganizationId;
            Organization org = OrganizationService.Get(id);

            // Access level
            var isAdministrator = WebSecurityWrapper.IsUserInRole(Common.Constants.RoleAdmin);
            var isOrgAdmin      = HasOrgAdminAccess(id);

            // Volunteers
            var volunteers = VolunteerService.GetVolunteersByOrganization(id).OrderBy(p => p.IsOrganizationAdmin).Reverse();

            // Resources
            var resources     = AdminService.GetResourceCheckinsForOrganization(id);
            var resourceTypes = AdminService.GetResourceTypes();

            // Commitments
            var commitments = VolunteerService.GetCommitmentsForOrganization(id, false);

            // Lookup lists
            var allDisasters         = DisasterService.GetActiveList();
            var volunteersSelectList = VolunteerService.GetList().OrderBy(person => person.LastName).Select(person => new SelectListItem()
            {
                Value    = person.Id.ToString(),
                Text     = $"{person.LastName}, {person.FirstName} - {person.Email}",
                Selected = (person.Id == inputModel.AddVolunteerId)
            });

            // Disaster info breakdown - get all disasters with any volunteer or resource checkin
            var disasters = GetDisasterInfos(allDisasters, resources, commitments);

            // Create
            var model = new OrganizationHomeViewModel
            {
                OrganizationId        = id,
                Organization          = org,
                IsAdministrator       = isAdministrator,
                IsOrgAdmin            = isOrgAdmin,
                Volunteers            = volunteers,
                OrganizationResources = resources,
                Disasters             = disasters,
                ResourceTypes         = resourceTypes,
                AllDisasters          = allDisasters,
                VolunteersSelectList  = volunteersSelectList
            };

            // Resources form fields
            model.ResourceDisasterId  = inputModel.ResourceDisasterId;
            model.ResourceDescription = inputModel.ResourceDescription;
            model.ResourceQuantity    = inputModel.ResourceQuantity;
            model.ResourceTypeId      = inputModel.ResourceTypeId;
            model.ResourceStartDate   = inputModel.ResourceStartDate;
            model.ResourceEndDate     = inputModel.ResourceEndDate;
            model.ResourceLocation    = inputModel.ResourceLocation;
            model.RemoveResourceId    = inputModel.RemoveResourceId;

            return(model);
        }
예제 #4
0
        public ActionResult DemoteFromAdmin(OrganizationHomeViewModel model)
        {
            ModelState.RemoveErrorsExcept("OrganizationId,DemoteFromAdminPersonId");
            if (!ModelState.IsValid)
            {
                return(View("Home", CreateHomeViewModel(model)));
            }

            try
            {
                ConfirmAdminAccess(model.OrganizationId);
                VolunteerService.DemoteVolunteerFromOrganizationAdmin(model.OrganizationId, model.DemoteFromAdminPersonId);

                return(Redirect("Home/" + model.OrganizationId));
            }
            catch (ArgumentException ex)
            {
                ModelState.AddModelError("", ex.Message);
            }

            return(View("Home", CreateHomeViewModel(model.OrganizationId)));
        }
예제 #5
0
        public ActionResult RemoveVolunteer(OrganizationHomeViewModel model)
        {
            ModelState.RemoveErrorsExcept("OrganizationId,RemoveVolunteerId");
            if (!ModelState.IsValid)
            {
                return(View("Home", CreateHomeViewModel(model)));
            }

            try
            {
                ConfirmAdminAccess(model.OrganizationId);
                VolunteerService.RemoveVolunteerFromOrganization(model.OrganizationId, model.RemoveVolunteerId);

                return(Redirect("Home/" + model.OrganizationId));
            }
            catch (InvalidOperationException ex)
            {
                ModelState.AddModelError("", ex.Message);
            }

            return(View("Home", CreateHomeViewModel(model.OrganizationId)));
        }