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)); }
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)); }
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)); } }
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)); } }