Пример #1
0
        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());
            }
        }
Пример #2
0
 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());
     }
 }
Пример #3
0
        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));
        }
Пример #4
0
 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)));
     }
 }
Пример #5
0
 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));
     }
 }
Пример #6
0
 public IViewComponentResult Invoke(ComponentWithComponentListViewModel vm)
 {
     return(View(vm));
 }
Пример #7
0
        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)));
                }
            }
        }