コード例 #1
0
        public IActionResult Edit(int?id, string returnUrl)
        {
            if (id == null)
            {
                return(NotFound());
            }

            Member member = unitOfWork.Members.GetMemberWithDemographicsAndDutyStatus(Convert.ToInt32(id));

            if (member == null)
            {
                return(NotFound());
            }
            MemberAddEditViewModel vm = new MemberAddEditViewModel(member,
                                                                   unitOfWork.Positions.GetAllPositionSelectListItems(),
                                                                   unitOfWork.MemberRanks.GetMemberRankSelectListItems(),
                                                                   unitOfWork.MemberGenders.GetMemberGenderSelectListItems(),
                                                                   unitOfWork.MemberRaces.GetMemberRaceSelectListItems(),
                                                                   unitOfWork.MemberDutyStatus.GetMemberDutyStatusSelectListItems(),
                                                                   unitOfWork.PhoneNumberTypes.GetPhoneNumberTypeSelectListItems(),
                                                                   unitOfWork.AppStatuses.GetApplicationStatusSelectListItems());

            ViewBag.Title     = "Edit Member";
            ViewBag.ReturnUrl = returnUrl;
            return(View(vm));
        }
コード例 #2
0
ファイル: HomeController.cs プロジェクト: stringly/BlueDeck
 public IActionResult Register([Bind("FirstName,LastName,MiddleName,MemberRank,DutyStatusId,MemberRace,MemberGender,PositionId,IdNumber,Email,LDAPName,AppStatusId,ContactNumbers")] MemberAddEditViewModel form)
 {
     if (!ModelState.IsValid)
     {
         form.Positions        = unitOfWork.Positions.GetAllPositionSelectListItems();
         form.RaceList         = unitOfWork.MemberRaces.GetMemberRaceSelectListItems();
         form.RankList         = unitOfWork.MemberRanks.GetMemberRankSelectListItems();
         form.GenderList       = unitOfWork.MemberGenders.GetMemberGenderSelectListItems();
         form.DutyStatus       = unitOfWork.MemberDutyStatus.GetMemberDutyStatusSelectListItems();
         form.PhoneNumberTypes = unitOfWork.PhoneNumberTypes.GetPhoneNumberTypeSelectListItems();
         ViewBag.Title         = "Create Member - Corrections Required";
         ViewBag.Status        = "Warning!";
         ViewBag.Message       = "You must correct the fields indicated.";
         return(View(form));
     }
     else
     {
         var identity = (ClaimsIdentity)User.Identity;
         form.LastModified     = DateTime.Now;
         form.CreatedDate      = DateTime.Now;
         form.CreatedById      = 1; // hack... just set this to me for new registrations
         form.LastModifiedById = 1;
         // TODO: Member addition checks? Duplicate Name/Badge Numbers?
         unitOfWork.Members.UpdateMember(form);
         unitOfWork.Complete();
         return(RedirectToAction(nameof(Pending)));
     }
 }
コード例 #3
0
 public IActionResult Create([Bind(
                                  "FirstName," +
                                  "LastName," +
                                  "MiddleName," +
                                  "MemberRank," +
                                  "DutyStatusId," +
                                  "MemberRace," +
                                  "MemberGender," +
                                  "PositionId," +
                                  "TempPositionId," +
                                  "IdNumber," +
                                  "Email," +
                                  "LDAPName," +
                                  "AppStatusId," +
                                  "ContactNumbers," +
                                  "IsUser," +
                                  "IsComponentAdmin," +
                                  "IsGlobalAdmin")
                             ] MemberAddEditViewModel form, string returnUrl)
 {
     if (!ModelState.IsValid)
     {
         form.Positions        = unitOfWork.Positions.GetAllPositionSelectListItems();
         form.RaceList         = unitOfWork.MemberRaces.GetMemberRaceSelectListItems();
         form.RankList         = unitOfWork.MemberRanks.GetMemberRankSelectListItems();
         form.GenderList       = unitOfWork.MemberGenders.GetMemberGenderSelectListItems();
         form.DutyStatus       = unitOfWork.MemberDutyStatus.GetMemberDutyStatusSelectListItems();
         form.PhoneNumberTypes = unitOfWork.PhoneNumberTypes.GetPhoneNumberTypeSelectListItems();
         form.AppStatuses      = unitOfWork.AppStatuses.GetApplicationStatusSelectListItems();
         ViewBag.Title         = "Create Member - Corrections Required";
         ViewBag.Status        = "Warning!";
         ViewBag.Message       = "You must correct the fields indicated.";
         return(View(form));
     }
     else
     {
         // TODO: Member addition checks? Duplicate Name/Badge Numbers?
         form.CreatedById      = Convert.ToInt32(User.Claims.FirstOrDefault(claim => claim.Type == "MemberId").Value);
         form.LastModifiedById = Convert.ToInt32(User.Claims.FirstOrDefault(claim => claim.Type == "MemberId").Value);
         form.CreatedDate      = DateTime.Now;
         form.LastModified     = DateTime.Now;
         unitOfWork.Members.UpdateMember(form);
         unitOfWork.Complete();
         TempData["Status"]  = "Success!";
         TempData["Message"] = "Member successfully created.";
         if (returnUrl != "")
         {
             return(Redirect(returnUrl));
         }
         else
         {
             return(RedirectToAction(nameof(Index)));
         }
     }
 }
コード例 #4
0
ファイル: RosterController.cs プロジェクト: stringly/BlueDeck
        // EditEmployeeModalViewModalViewComponent
        public IActionResult GetEditEmployeeModalViewComponent(int memberId)
        {
            Member m = unitOfWork.Members.GetMemberWithDemographicsAndDutyStatus(memberId);
            MemberAddEditViewModel vm = new MemberAddEditViewModel(m, unitOfWork.MemberRanks.GetMemberRankSelectListItems(),
                                                                   unitOfWork.MemberGenders.GetMemberGenderSelectListItems(),
                                                                   unitOfWork.MemberRaces.GetMemberRaceSelectListItems(),
                                                                   unitOfWork.MemberDutyStatus.GetMemberDutyStatusSelectListItems(),
                                                                   unitOfWork.PhoneNumberTypes.GetPhoneNumberTypeSelectListItems(),
                                                                   unitOfWork.AppStatuses.GetApplicationStatusSelectListItems());

            return(ViewComponent("EditMemberModal", vm));
        }
コード例 #5
0
        public IActionResult Create(string returnUrl)
        {
            MemberAddEditViewModel vm = new MemberAddEditViewModel(new Member(),
                                                                   unitOfWork.Positions.GetAllPositionSelectListItems(),
                                                                   unitOfWork.MemberRanks.GetMemberRankSelectListItems(),
                                                                   unitOfWork.MemberGenders.GetMemberGenderSelectListItems(),
                                                                   unitOfWork.MemberRaces.GetMemberRaceSelectListItems(),
                                                                   unitOfWork.MemberDutyStatus.GetMemberDutyStatusSelectListItems(),
                                                                   unitOfWork.PhoneNumberTypes.GetPhoneNumberTypeSelectListItems(),
                                                                   unitOfWork.AppStatuses.GetApplicationStatusSelectListItems());

            ViewBag.Title     = "Create New Member";
            ViewBag.ReturnUrl = returnUrl;
            return(View(vm));
        }
コード例 #6
0
ファイル: RosterController.cs プロジェクト: stringly/BlueDeck
 public IActionResult EditMemberModal([Bind("MemberId,MemberRank,MemberGender,MemberRace,FirstName,LastName,MiddleName,IdNumber,PositionId,TempPositionId,AppStatusId,LDAPName,IsUser,IsComponentAdmin,IsGlobalAdmin,DutyStatusId,Email,ContactNumbers")] MemberAddEditViewModel form)
 {
     if (ModelState.IsValid)
     {
         form.LastModifiedById = Convert.ToInt32(User.Claims.FirstOrDefault(claim => claim.Type == "MemberId").Value);
         form.LastModified     = DateTime.Now;
         unitOfWork.Members.UpdateMember(form);
         unitOfWork.Complete();
         return(Json(new { success = true }));
     }
     else
     {
         Member m = unitOfWork.Members.GetMemberWithDemographicsAndDutyStatus(Convert.ToInt32(form.MemberId));
         MemberAddEditViewModel vm = new MemberAddEditViewModel(m, unitOfWork.MemberRanks.GetMemberRankSelectListItems(),
                                                                unitOfWork.MemberGenders.GetMemberGenderSelectListItems(),
                                                                unitOfWork.MemberRaces.GetMemberRaceSelectListItems(),
                                                                unitOfWork.MemberDutyStatus.GetMemberDutyStatusSelectListItems(),
                                                                unitOfWork.PhoneNumberTypes.GetPhoneNumberTypeSelectListItems(),
                                                                unitOfWork.AppStatuses.GetApplicationStatusSelectListItems());
         return(ViewComponent("EditMemberModal", vm));
     }
 }
コード例 #7
0
ファイル: HomeController.cs プロジェクト: stringly/BlueDeck
        public IActionResult Register()
        {
            var    identity        = User.Identities.FirstOrDefault(x => x.IsAuthenticated);
            string logonName       = identity.Name.Split('\\')[1];
            int    pendingStatusId = unitOfWork.AppStatuses.Find(x => x.StatusName == "Pending").FirstOrDefault()?.AppStatusId ?? 0;
            Member newMember       = new Member()
            {
                Email       = $"{logonName}@co.pg.md.us",
                LDAPName    = logonName,
                AppStatusId = pendingStatusId
            };
            MemberAddEditViewModel vm = new MemberAddEditViewModel(newMember,
                                                                   unitOfWork.Positions.GetAllPositionSelectListItems(),
                                                                   unitOfWork.MemberRanks.GetMemberRankSelectListItems(),
                                                                   unitOfWork.MemberGenders.GetMemberGenderSelectListItems(),
                                                                   unitOfWork.MemberRaces.GetMemberRaceSelectListItems(),
                                                                   unitOfWork.MemberDutyStatus.GetMemberDutyStatusSelectListItems(),
                                                                   unitOfWork.PhoneNumberTypes.GetPhoneNumberTypeSelectListItems(),
                                                                   unitOfWork.AppStatuses.GetApplicationStatusSelectListItems());

            ViewBag.Title = "Register";
            return(View(vm));
        }
コード例 #8
0
 public IViewComponentResult Invoke(MemberAddEditViewModel vm)
 {
     return(View(vm));
 }
コード例 #9
0
 public IActionResult Edit(int id, [Bind(
                                        "MemberId," +
                                        "FirstName," +
                                        "LastName," +
                                        "MiddleName," +
                                        "MemberRank," +
                                        "DutyStatusId," +
                                        "MemberGender," +
                                        "MemberRace," +
                                        "PositionId," +
                                        "TempPositionId," +
                                        "IdNumber," +
                                        "Email," +
                                        "LDAPName," +
                                        "AppStatusId," +
                                        "ContactNumbers," +
                                        "IsUser," +
                                        "IsComponentAdmin," +
                                        "IsGlobalAdmin," +
                                        "Creator," +
                                        "CreatedDate," +
                                        "LastModifiedBy," +
                                        "LastModified")] MemberAddEditViewModel form, string returnUrl)
 {
     if (!ModelState.IsValid)
     {
         // Model Validation failed, repopulate the ViewModel's List data and return the View
         form.Positions        = unitOfWork.Positions.GetAllPositionSelectListItems();
         form.RaceList         = unitOfWork.MemberRaces.GetMemberRaceSelectListItems();
         form.RankList         = unitOfWork.MemberRanks.GetMemberRankSelectListItems();
         form.GenderList       = unitOfWork.MemberGenders.GetMemberGenderSelectListItems();
         form.DutyStatus       = unitOfWork.MemberDutyStatus.GetMemberDutyStatusSelectListItems();
         form.AppStatuses      = unitOfWork.AppStatuses.GetApplicationStatusSelectListItems();
         form.PhoneNumberTypes = unitOfWork.PhoneNumberTypes.GetPhoneNumberTypeSelectListItems();
         ViewBag.Title         = "Edit Member - Corrections Required";
         ViewBag.Status        = "Warning!";
         ViewBag.Message       = "You must correct the fields indicated.";
         ViewBag.ReturnUrl     = returnUrl;
         return(View(form));
     }
     else
     {
         try
         {
             form.LastModifiedById = Convert.ToInt32(User.Claims.FirstOrDefault(claim => claim.Type == "MemberId").Value);
             form.LastModified     = DateTime.Now;
             unitOfWork.Members.UpdateMember(form);
             unitOfWork.Complete();
         }
         catch (DbUpdateConcurrencyException)
         {
             if (!MemberExists(id))
             {
                 return(NotFound());
             }
             else
             {
                 throw;
             }
         }
         TempData["Status"]  = "Success!";
         TempData["Message"] = "Member successfully updated.";
         if (returnUrl != null)
         {
             return(Redirect(returnUrl));
         }
         return(RedirectToAction(nameof(Index)));
     }
 }
コード例 #10
0
        public void UpdateMember(MemberAddEditViewModel form)
        {
            Member m;

            if (form.MemberId != null) // if MemberId is not null, we are editing an existing Member
            {
                m = ApplicationDbContext.Members
                    .Include(x => x.PhoneNumbers)
                    .Include(x => x.CurrentRoles)
                    .FirstOrDefault(x => x.MemberId == form.MemberId);
            }
            else
            {
                m = new Member();
                m.CurrentRoles = new List <Role>();
                m.CreatorId    = form.CreatedById;
                m.CreatedDate  = Convert.ToDateTime(form.CreatedDate);
            }

            /* there are a few things that can happen at this point:
             *  1. This is a new Member, which means there are no Roles
             *      - Check for a Position/Temp Position assignment in the form data
             *          -if no Position/Temp Position, then
             *              1. Position should be set to the "Unassigned"
             *              2. Temp Position should be null
             *  2. This is an existing Member, which means there MAY be roles
             *      - Check for a Position/Temp Position assignment in the form data
             *          - if no Position/Temp Position, assume the member is to be reassigned to the General Pool
             *              - if so, remove Component Admin Role (Leave Global Admin Role... global should be de-coupled from assignment
             *          - if a Position/Temp Position exists and Neither has ComponentAdmin privilege, check for and Remove the ComponentAdmin role from the Member's CurrentRoles
             *          - if a Position/Temp Position exists and Either has ComponentAdmin privilge, check for and, if necessary, add the Component Admin role to the Member's Current Roles.
             *
             * An easy way to do this might be by simply switching the form's "checkbox" property corresponding to the Component Admin role in these cases.
             *
             */
            if (form.PositionId != null)
            {
                m.PositionId = Convert.ToInt32(form.PositionId);
                if (m.AppStatusId == 3 || form.AppStatusId == 3) // I only want to add Roles to Active Accounts or Accounts being activated.
                {
                    Position formAssignedPosition     = ApplicationDbContext.Positions.Find(form.PositionId);
                    Position formAssignedTempPosition = ApplicationDbContext.Positions.Find(form.TempPositionId); // how will this behave if null?
                    if (formAssignedPosition.IsManager == true || formAssignedPosition.IsAssistantManager == true || formAssignedTempPosition?.IsManager == true || formAssignedTempPosition?.IsAssistantManager == true)
                    {
                        // these positions require ComponentAdmin Privilege
                        form.IsComponentAdmin = true;
                    }
                    else
                    {
                        form.IsComponentAdmin = false;
                    }
                }
            }
            else if (m.PositionId == 0)
            {
                Position unassigned = ApplicationDbContext.Positions.FirstOrDefault(x => x.Name == "Unassigned");
                if (unassigned != null)
                {
                    m.Position = unassigned;
                }
                form.IsComponentAdmin = false;
            }



            m.TempPositionId   = form.TempPositionId;
            m.RankId           = Convert.ToInt32(form.MemberRank);
            m.GenderId         = Convert.ToInt32(form.MemberGender);
            m.RaceId           = Convert.ToInt32(form.MemberRace);
            m.DutyStatusId     = Convert.ToInt32(form.DutyStatusId);
            m.AppStatusId      = Convert.ToInt32(form.AppStatusId);
            m.Email            = form.Email;
            m.FirstName        = form.FirstName;
            m.IdNumber         = form.IdNumber;
            m.MiddleName       = form.MiddleName;
            m.LastName         = form.LastName;
            m.LDAPName         = form.LDAPName;
            m.LastModified     = Convert.ToDateTime(form.LastModified);
            m.LastModifiedById = form.LastModifiedById;
            // remove ALL roles from non-active accounts
            // at this point, the repo Member m data and the form data should match, so I can check the repo Member
            AppStatus activeStatus = ApplicationDbContext.ApplicationStatuses.FirstOrDefault(x => x.StatusName == "Active");

            if (m.AppStatusId != activeStatus?.AppStatusId)
            {
                // these will override the checkboxes on the form.
                form.IsUser           = false;
                form.IsComponentAdmin = false;
            }
            else
            {
                form.IsUser = true;
            }

            foreach (ContactNumber n in form.ContactNumbers)
            {
                if (n.MemberContactNumberId != 0)
                {
                    if (n.ToDelete == true)
                    {
                        ContactNumber toRemove = ApplicationDbContext.ContactNumbers.Where(x => x.MemberContactNumberId == n.MemberContactNumberId).FirstOrDefault();

                        ApplicationDbContext.ContactNumbers.Remove(toRemove);
                    }
                    else
                    {
                        ContactNumber toUpdate = m.PhoneNumbers.FirstOrDefault(x => x.MemberContactNumberId == n.MemberContactNumberId);
                        toUpdate.PhoneNumber = n.PhoneNumber;
                        toUpdate.Type        = ApplicationDbContext.PhoneNumberTypes.FirstOrDefault(x => x.PhoneNumberTypeId == n.Type.PhoneNumberTypeId);
                    }
                }
                else if (n.PhoneNumber != null)
                {
                    ContactNumber toAdd = new ContactNumber()
                    {
                        Member      = m,
                        PhoneNumber = n.PhoneNumber,
                        Type        = ApplicationDbContext.PhoneNumberTypes.FirstOrDefault(x => x.PhoneNumberTypeId == n.Type.PhoneNumberTypeId)
                    };
                    m.PhoneNumbers.Add(toAdd);
                }
            }
            if (form.MemberId == null)
            {
                ApplicationDbContext.Members.Add(m);
            }

            switch (form.IsUser)
            {
            case true:
                if (!m.CurrentRoles.Any(x => x.RoleType.RoleTypeName == "User"))
                {
                    RoleType userRoleType = ApplicationDbContext.RoleTypes.First(x => x.RoleTypeName == "User");
                    Role     r            = new Role()
                    {
                        RoleType = userRoleType
                    };
                    m.CurrentRoles.Add(r);
                }
                break;

            case false:
                Role userRole = m.CurrentRoles.FirstOrDefault(x => x.RoleType.RoleTypeName == "User");
                if (userRole != null)
                {
                    ApplicationDbContext.Roles.Remove(userRole);
                }
                break;
            }

            switch (form.IsComponentAdmin)
            {
            case true:
                if (!m.CurrentRoles.Any(x => x.RoleType.RoleTypeName == "ComponentAdmin"))
                {
                    RoleType userRoleType = ApplicationDbContext.RoleTypes.First(x => x.RoleTypeName == "ComponentAdmin");
                    Role     r            = new Role()
                    {
                        RoleType = userRoleType
                    };
                    m.CurrentRoles.Add(r);
                }
                break;

            case false:
                Role userRole = m.CurrentRoles.FirstOrDefault(x => x.RoleType.RoleTypeName == "ComponentAdmin");
                if (userRole != null)
                {
                    ApplicationDbContext.Roles.Remove(userRole);
                }
                break;
            }
            switch (form.IsGlobalAdmin)
            {
            case true:
                if (!m.CurrentRoles.Any(x => x.RoleType.RoleTypeName == "GlobalAdmin"))
                {
                    RoleType userRoleType = ApplicationDbContext.RoleTypes.First(x => x.RoleTypeName == "GlobalAdmin");
                    Role     r            = new Role()
                    {
                        RoleType = userRoleType
                    };
                    m.CurrentRoles.Add(r);
                }
                break;

            case false:
                Role userRole = m.CurrentRoles.FirstOrDefault(x => x.RoleType.RoleTypeName == "GlobalAdmin");
                if (userRole != null)
                {
                    ApplicationDbContext.Roles.Remove(userRole);
                }
                break;
            }
        }