Пример #1
0
        public IActionResult Edit(int?id, string returnUrl)
        {
            if (id == null)
            {
                return(NotFound());
            }
            Position position = unitOfWork.Positions.GetPositionAndAllCurrentMembers(Convert.ToInt32(id));

            if (position == null)
            {
                return(NotFound());
            }
            PositionWithComponentListViewModel vm = new PositionWithComponentListViewModel(position);

            if (User.IsInRole("GlobalAdmin"))
            {
                vm.Components       = unitOfWork.Components.GetComponentSelectListItems();
                vm.AvailableMembers = unitOfWork.Members.GetAllMemberSelectListItems().ToList();
            }
            else if (User.IsInRole("ComponentAdmin"))
            {
                vm.Components       = JsonConvert.DeserializeObject <List <ComponentSelectListItem> >(User.Claims.FirstOrDefault(claim => claim.Type == "CanEditComponents").Value.ToString());
                vm.AvailableMembers = JsonConvert.DeserializeObject <List <MemberSelectListItem> >(User.Claims.FirstOrDefault(claim => claim.Type == "CanEditUsers").Value.ToString());
            }
            else
            {
                return(Forbid());
            }
            ViewBag.ReturnUrl = returnUrl;
            ViewBag.Title     = "Edit Position";
            return(View(vm));
        }
Пример #2
0
        public IActionResult Create(string returnUrl)
        {
            PositionWithComponentListViewModel vm = new PositionWithComponentListViewModel(new Position());

            if (User.IsInRole("GlobalAdmin"))
            {
                vm.Components       = unitOfWork.Components.GetComponentSelectListItems();
                vm.AvailableMembers = unitOfWork.Members.GetAllMemberSelectListItems().ToList();
            }
            else if (User.IsInRole("ComponentAdmin"))
            {
                vm.Components       = JsonConvert.DeserializeObject <List <ComponentSelectListItem> >(User.Claims.FirstOrDefault(claim => claim.Type == "CanEditComponents").Value.ToString());
                vm.AvailableMembers = JsonConvert.DeserializeObject <List <MemberSelectListItem> >(User.Claims.FirstOrDefault(claim => claim.Type == "CanEditUsers").Value.ToString());
            }
            else
            {
                return(Forbid());
            }
            ViewBag.Title     = "Create New Position";
            ViewBag.ReturnUrl = returnUrl;
            return(View(vm));
        }
Пример #3
0
        public IActionResult Edit(int id,
                                  [Bind("PositionId," +
                                        "PositionName," +
                                        "LineupPosition," +
                                        "ParentComponentId," +
                                        "JobTitle," +
                                        "Callsign," +
                                        "IsManager," +
                                        "IsAssistantManager," +
                                        "IsUnique," +
                                        "CurrentMembers," +
                                        "Creator," +
                                        "CreatedDate," +
                                        "CreatedById," +
                                        "LastModifiedBy," +
                                        "LastModified," +
                                        "LastModifiedById")] PositionWithComponentListViewModel form, string returnUrl)
        {
            int       errors = 0;
            Component targetParentComponent = unitOfWork.Components.Find(c => c.ComponentId == form.ParentComponentId).FirstOrDefault();
            Position  p = new Position();

            if (!ModelState.IsValid)
            {
                errors++;
                ViewBag.Message = "You must correct the fields indicated.";
            }
            else
            {
                if (id != form.PositionId)
                {
                    return(NotFound());
                }
                else if (unitOfWork.Positions.Find(x => x.Name == form.PositionName && x.ParentComponentId == form.ParentComponentId && x.PositionId != id).FirstOrDefault() != null)
                {
                    // user is attempting to change the name of the position to a name which already exists
                    ViewBag.Message = $"A Position with the name {form.PositionName} already exists in the selected parent Component. Use a different Name.\n";
                    errors++;
                }
                else if (form.Callsign != null)
                {
                    if (unitOfWork.Positions.SingleOrDefault(x => x.Callsign == form.Callsign.ToUpper() && x.ParentComponentId == form.ParentComponentId && x.PositionId != form.PositionId) != null)
                    {
                        errors++;
                        ViewBag.Message = $"The callsign {form.Callsign} is in use by another position in the selected parent Component. Choose another.";
                    }
                }
                else if (form.IsManager && unitOfWork.Positions.Find(x => x.ParentComponent.ComponentId == form.ParentComponentId && x.IsManager && x.PositionId != form.PositionId).FirstOrDefault() != null)
                {
                    // user is attempting to elevate a Position to Manager when the ParentComponent already has a Manager

                    ViewBag.Message += $"{targetParentComponent.Name} already has a Position designated as Manager. You can not elevate this Position.\n";
                    errors++;
                }
                else if (form.IsAssistantManager && unitOfWork.Positions.Find(x => x.ParentComponent.ComponentId == form.ParentComponentId && x.IsAssistantManager && x.PositionId != form.PositionId).FirstOrDefault() != null)
                {
                    // user is attempting to elevate a Position to Manager when the ParentComponent already has a Manager

                    ViewBag.Message += $"{targetParentComponent.Name} already has a Position designated as an Assistant Manager. You can not elevate this Position.\n";
                    errors++;
                }
                else if (form.IsUnique == true && p.IsUnique == false && p.Members.Count() > 1)
                {
                    // user is attempting to make Position unique when multiple members are assigned
                    ViewBag.Message += $"{p.Name} has {p.Members.Count()} current Members. You can't set this Position to Unique with multiple members.\n";
                    errors++;
                }
            }
            // 0 errors should mean all conditions passed
            if (errors == 0)
            {
                p.PositionId         = Convert.ToInt32(form.PositionId);
                p.ParentComponent    = targetParentComponent;
                p.Name               = form.PositionName;
                p.IsUnique           = form.IsUnique;
                p.JobTitle           = form.JobTitle;
                p.Callsign           = form?.Callsign?.ToUpper() ?? null;
                p.IsManager          = form.IsManager;
                p.IsAssistantManager = form.IsAssistantManager;
                p.LineupPosition     = form.LineupPosition;
                p.LastModifiedById   = Convert.ToInt32(User.Claims.FirstOrDefault(claim => claim.Type == "MemberId").Value);
                p.LastModified       = DateTime.Now;
                if (form.CurrentMembers != null)
                {
                    List <Member> formMembers = new List <Member>();
                    foreach (MemberLineupItem mli in form.CurrentMembers)
                    {
                        Member m = unitOfWork.Members.Get(mli.MemberId);
                        formMembers.Add(m);
                    }
                    p.Members = formMembers;
                }
                else
                {
                    p.Members = new List <Member>();
                }
                unitOfWork.Positions.UpdatePositionAndSetLineup(p);
                unitOfWork.Complete();
                TempData["Status"]  = "Success!";
                TempData["Message"] = "Position successfully updated";
                if (returnUrl != null)
                {
                    return(Redirect(returnUrl));
                }
                else
                {
                    return(RedirectToAction(nameof(Index)));
                }
            }
            else
            {
                form.Components   = unitOfWork.Components.GetComponentSelectListItems();
                ViewBag.Title     = "Edit Position - Corrections Required";
                ViewBag.Status    = "Warning!";
                ViewBag.ReturnUrl = returnUrl;
                return(View(form));
            }
        }
Пример #4
0
        public IActionResult Create(
            [Bind("PositionName," +
                  "LineupPosition," +
                  "ParentComponentId," +
                  "JobTitle," +
                  "Callsign," +
                  "IsManager," +
                  "IsAssistantManager," +
                  "IsUnique," +
                  "CurrentMembers")] PositionWithComponentListViewModel form, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                ViewBag.Title   = "Create Position: Corrections required";
                ViewBag.Status  = "Warning!";
                ViewBag.Message = "You must correct the fields indicated";
                if (User.IsInRole("GlobalAdmin"))
                {
                    form.Components       = unitOfWork.Components.GetComponentSelectListItems();
                    form.AvailableMembers = unitOfWork.Members.GetAllMemberSelectListItems().ToList();
                }
                else if (User.IsInRole("ComponentAdmin"))
                {
                    form.Components       = JsonConvert.DeserializeObject <List <ComponentSelectListItem> >(User.Claims.FirstOrDefault(claim => claim.Type == "CanEditComponents").Value.ToString());
                    form.AvailableMembers = JsonConvert.DeserializeObject <List <MemberSelectListItem> >(User.Claims.FirstOrDefault(claim => claim.Type == "CanEditUsers").Value.ToString());
                }
                ViewBag.ReturnUrl = returnUrl;
                return(View(form));
            }

            int       errors = 0;
            Component targetParentComponent = unitOfWork.Components.SingleOrDefault(c => c.ComponentId == form.ParentComponentId);
            Position  p = new Position {
                ParentComponent    = targetParentComponent,
                Name               = form.PositionName,
                IsUnique           = form.IsUnique,
                JobTitle           = form.JobTitle,
                IsManager          = form.IsManager,
                IsAssistantManager = form.IsAssistantManager,
                LineupPosition     = form.LineupPosition,
                Callsign           = form.Callsign.ToUpper(),
                CreatedDate        = DateTime.Now,
                LastModified       = DateTime.Now,
                CreatorId          = Convert.ToInt32(User.Claims.FirstOrDefault(claim => claim.Type == "MemberId").Value),
                LastModifiedById   = Convert.ToInt32(User.Claims.FirstOrDefault(claim => claim.Type == "MemberId").Value)
            };

            if (form.CurrentMembers != null)
            {
                p.Members = new List <Member>();
                foreach (MemberLineupItem mli in form.CurrentMembers)
                {
                    Member m = unitOfWork.Members.Get(mli.MemberId);
                    p.Members.Add(m);
                }
            }
            if (unitOfWork.Positions.SingleOrDefault(x => x.Name == form.PositionName && x.ParentComponentId == form.ParentComponentId) != null)
            {
                ViewBag.Message = $"A Position with the name {form.PositionName} already exists. Use a different Name.\n";
                errors++;
            }
            else if (unitOfWork.Positions.SingleOrDefault(x => x.ParentComponentId == form.ParentComponentId && x.Callsign == form.Callsign) != null)
            {
                errors++;
                ViewBag.Message = $"The callsign '{p.Callsign}' is in use. Choose another.";
            }
            // check if user is attempting to add "Manager" position to the ParentComponent
            else if (form.IsManager)
            {
                // check if the Parent Component of the position already has a Position designated as "Manager"
                if (unitOfWork.Positions.SingleOrDefault(c => c.ParentComponent.ComponentId == form.ParentComponentId && c.IsManager == true) != null)
                {
                    ViewBag.Message += $"{p.ParentComponent.Name} already has a Position designated as Manager. Only one Manager Position is permitted.\n";
                    errors++;
                }
            }
            // check if user is attempting to add "Assistant Manager" position to the ParentComponent
            else if (form.IsAssistantManager)
            {
                // check if the Parent Component of the position already has a Position designated as "Assistant Manager"
                if (unitOfWork.Positions.SingleOrDefault(c => c.ParentComponent.ComponentId == form.ParentComponentId && c.IsAssistantManager == true) != null)
                {
                    ViewBag.Message += $"{p.ParentComponent.Name} already has a Position designated as an Assistant Manager. Only one Assistant Manager Position is permitted.\n";
                    errors++;
                }
            }
            if (errors == 0)
            {
                targetParentComponent = unitOfWork.Components.SingleOrDefault(c => c.ComponentId == form.ParentComponentId);
                unitOfWork.Positions.UpdatePositionAndSetLineup(p);
                unitOfWork.Complete();
                TempData["Status"]  = "Success!";
                TempData["Message"] = "Position successfully created.";
                if (returnUrl != null)
                {
                    return(Redirect(returnUrl));
                }
                else
                {
                    return(RedirectToAction(nameof(Index)));
                }
            }
            else
            {
                if (User.IsInRole("GlobalAdmin"))
                {
                    form.Components       = unitOfWork.Components.GetComponentSelectListItems();
                    form.AvailableMembers = unitOfWork.Members.GetAllMemberSelectListItems().ToList();
                }
                else if (User.IsInRole("ComponentAdmin"))
                {
                    form.Components       = JsonConvert.DeserializeObject <List <ComponentSelectListItem> >(User.Claims.FirstOrDefault(claim => claim.Type == "CanEditComponents").Value.ToString());
                    form.AvailableMembers = JsonConvert.DeserializeObject <List <MemberSelectListItem> >(User.Claims.FirstOrDefault(claim => claim.Type == "CanEditUsers").Value.ToString());
                }
                ViewBag.Title     = "New Position: Corrections Required";
                ViewBag.Status    = "Warning!";
                ViewBag.ReturnUrl = returnUrl;
                return(View(form));
            }
        }