public IActionResult Edit(int?id, string returnUrl) { if (id == null) { return(NotFound()); } Component component = unitOfWork.Components.SingleOrDefault(x => x.ComponentId == id); if (component == null) { return(NotFound()); } if (User.IsInRole("GlobalAdmin")) { ComponentWithComponentListViewModel vm = new ComponentWithComponentListViewModel(component, unitOfWork.Components.GetComponentSelectListItems()); ViewBag.Title = "Edit Component"; ViewBag.ReturnUrl = returnUrl; return(View(vm)); } else if (User.IsInRole("ComponentAdmin")) { List <ComponentSelectListItem> components = JsonConvert.DeserializeObject <List <ComponentSelectListItem> >(User.Claims.FirstOrDefault(claim => claim.Type == "CanEditComponents").Value.ToString()); ComponentWithComponentListViewModel vm = new ComponentWithComponentListViewModel(component, components); ViewBag.Title = "Edit Component"; ViewBag.ReturnUrl = returnUrl; return(View(vm)); } else { return(Forbid()); } }
public IActionResult Create(string returnUrl) { if (User.IsInRole("GlobalAdmin")) { // if the User is a Global Admin, then they can add a Component as a Child to any of the existing components, // so we build the viewmodel with the full DB component list as Select list options ComponentWithComponentListViewModel vm = new ComponentWithComponentListViewModel(new Component(), unitOfWork.Components.GetComponentSelectListItems()); ViewBag.Title = "Create New Component"; ViewBag.ReturnUrl = returnUrl; return(View(vm)); } else if (User.IsInRole("ComponentAdmin")) { // if the User is not GlobalAdmin, but is a Component Admin, then we restrict the VM to only allow the User to // add a Component to one of the components that they supervise. We retrieve this list from the User's Claims, where a // List of ComponentSelectListItems should have been serialized via the ClaimsLoader List <ComponentSelectListItem> components = JsonConvert.DeserializeObject <List <ComponentSelectListItem> >(User.Claims.FirstOrDefault(claim => claim.Type == "CanEditComponents").Value.ToString()); ComponentWithComponentListViewModel vm = new ComponentWithComponentListViewModel(new Component(), components); ViewBag.Title = "Create New Component"; ViewBag.ReturnUrl = returnUrl; return(View(vm)); } else { return(Forbid()); } }
public IActionResult GetAddEditComponentViewComponent(int componentId = 0, int parentComponentId = 0) { Component c = new Component(); List <ComponentSelectListItem> components = new List <ComponentSelectListItem>(); if (User.IsInRole("GlobalAdmin")) { components = unitOfWork.Components.GetComponentSelectListItems(); } else if (User.IsInRole("ComponentAdmin")) { components = JsonConvert.DeserializeObject <List <ComponentSelectListItem> >( User.Claims.FirstOrDefault( claim => claim.Type == "CanEditComponents") .Value .ToString()); } else { return(Forbid()); } if (componentId != 0) { c = unitOfWork.Components.Get(componentId); } if (parentComponentId != 0) { Component parent = unitOfWork.Components.Get(parentComponentId); c.ParentComponent = parent; } ComponentWithComponentListViewModel vm = new ComponentWithComponentListViewModel(c, components); return(ViewComponent("ComponentAddEditModal", vm)); }
public IActionResult Create([Bind("ParentComponentId,ComponentName,LineupPosition,Acronym")] ComponentWithComponentListViewModel form, string returnUrl) { if (!ModelState.IsValid) { form.Components = unitOfWork.Components.GetComponentSelectListItems(); ViewBag.Title = "Create Component - Corrections Required"; ViewBag.Status = "Warning!"; ViewBag.Message = "You must correct the fields indicated."; ViewBag.ReturnUrl = returnUrl; return(View(form)); } else { Component c = new Component { Name = form.ComponentName, Acronym = form.Acronym, ParentComponent = unitOfWork.Components.SingleOrDefault(x => x.ComponentId == form.ParentComponentId), LineupPosition = form.LineupPosition, 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) }; // check if a Component with the Name provided already exists and reject if so if (unitOfWork.Components.ComponentNameNotAvailable(c) == true) { ViewBag.Title = "Create Component - Name taken"; ViewBag.Status = "Warning!"; ViewBag.Message = $"A Component with the name {form.ComponentName} already exists. Use a different Name."; form.Components = unitOfWork.Components.GetComponentSelectListItems(); ViewBag.ReturnUrl = returnUrl; return(View(form)); } // add Component to repo via method that controls setting lineup unitOfWork.Components.UpdateComponentAndSetLineup(c); unitOfWork.Complete(); } TempData["Status"] = "Success!"; TempData["Message"] = "Component successfully created."; if (!String.IsNullOrEmpty(returnUrl)) { return(Redirect(returnUrl)); } else { return(RedirectToAction(nameof(Index))); } }
public IActionResult UpdateComponent([Bind("ComponentId,ParentComponentId,ComponentName,LineupPosition,Acronym")] ComponentWithComponentListViewModel form) { if (ModelState.IsValid) { if (form.ComponentId != 0) { if (unitOfWork.Components.SingleOrDefault(x => x.Name == form.ComponentName && x.ComponentId != form.ComponentId) != null) { ViewBag.Message = $"A Component with the name {form.ComponentName} already exists. Use a different Name."; form.Components = unitOfWork.Components.GetComponentSelectListItems(); return(ViewComponent("ComponentAddEditModal", form)); } else { Component parentComponent = unitOfWork.Components.Get(Convert.ToInt32(form.ParentComponentId)); Component c = new Component() { ComponentId = Convert.ToInt32(form.ComponentId), Acronym = form.Acronym, Name = form.ComponentName, LineupPosition = form.LineupPosition, ParentComponent = parentComponent }; unitOfWork.Components.UpdateComponentAndSetLineup(c); unitOfWork.Complete(); return(Json(new { Success = true })); } } else { Component parentComponent = unitOfWork.Components.Get(Convert.ToInt32(form.ParentComponentId)); Component c = new Component() { Acronym = form.Acronym, Name = form.ComponentName, LineupPosition = form.LineupPosition, ParentComponent = parentComponent }; unitOfWork.Components.UpdateComponentAndSetLineup(c); unitOfWork.Complete(); return(Json(new { Success = true })); } } else { form.Components = unitOfWork.Components.GetComponentSelectListItems(); return(ViewComponent("ComponentAddEditModal", form)); } }
public IViewComponentResult Invoke(ComponentWithComponentListViewModel vm) { return(View(vm)); }
public IActionResult Edit(int id, [Bind("ComponentId," + "ParentComponentId," + "ComponentName," + "LineupPosition," + "Acronym," + "Creator," + "CreatedDate," + "LastModifiedBy," + "LastModified," + "LastModifiedById," + "CreatedById")] ComponentWithComponentListViewModel form, string returnUrl) { Component c = unitOfWork.Components.GetComponentWithParentComponent(Convert.ToInt32(id)); Component targetParentComponent = unitOfWork.Components.SingleOrDefault(x => x.ComponentId == form.ParentComponentId); if (id != form.ComponentId) { return(NotFound()); } if (!ModelState.IsValid) { if (User.IsInRole("GlobalAdmin")) { form.Components = unitOfWork.Components.GetComponentSelectListItems(); } else { form.Components = JsonConvert.DeserializeObject <List <ComponentSelectListItem> >( User.Claims.FirstOrDefault( claim => claim.Type == "CanEditComponents") .Value .ToString()); } ViewBag.Title = "Edit Component - Corrections Required"; ViewBag.Status = "Warning!"; ViewBag.Message = "You must correct the fields indicated."; ViewBag.ReturnUrl = returnUrl; return(View(form)); } else if (unitOfWork.Components.SingleOrDefault(x => x.Name == form.ComponentName && x.ComponentId != c.ComponentId) != null) { ViewBag.Message = $"A Component with the name {form.ComponentName} already exists. Use a different Name."; if (User.IsInRole("GlobalAdmin")) { form.Components = unitOfWork.Components.GetComponentSelectListItems(); } else { form.Components = JsonConvert.DeserializeObject <List <ComponentSelectListItem> >( User.Claims.FirstOrDefault( claim => claim.Type == "CanEditComponents") .Value .ToString()); } ViewBag.Title = "Edit Component - Corrections Required"; ViewBag.Status = "Warning!"; ViewBag.Message = "You must correct the fields indicated."; ViewBag.ReturnUrl = returnUrl; return(View(form)); } else { try { // Note: the repo method to control setting the ComponentLineup for sibling components requires that the component // that we are editing be passed as a "new" component because the repo method needs to be able to refer to the existing LineupPosition // of the edited component prior to it being changed Component componentToEdit = new Component() { ComponentId = c.ComponentId, Acronym = form.Acronym, Name = form.ComponentName, LineupPosition = form.LineupPosition, ParentComponent = targetParentComponent, CreatorId = Convert.ToInt32(User.Claims.FirstOrDefault(claim => claim.Type == "MemberId").Value), LastModifiedById = Convert.ToInt32(User.Claims.FirstOrDefault(claim => claim.Type == "MemberId").Value), CreatedDate = DateTime.Now, LastModified = DateTime.Now }; unitOfWork.Components.UpdateComponentAndSetLineup(componentToEdit); unitOfWork.Complete(); } catch (DbUpdateConcurrencyException) { if (!ComponentExists(id)) { return(NotFound()); } else { throw; } } TempData["Status"] = "Success!"; TempData["Message"] = "Component updated successfully."; if (!String.IsNullOrEmpty(returnUrl)) { return(Redirect(returnUrl)); } else { return(RedirectToAction(nameof(Index))); } } }