public MenuViewModel Create()
        {
            Dictionary <string, MenuGroupViewModel> menuGroupViewModels = new Dictionary <string, MenuGroupViewModel>();

            foreach (IExtensionMetadata extensionMetadata in ExtensionManager.GetInstances <IExtensionMetadata>())
            {
#if DEBUG
                _logger.LogInformation(
                    $"Looking for menu groups for extension metadata {extensionMetadata.GetType().FullName}");
#endif

                if (extensionMetadata.MenuGroups == null)
                {
                    continue;
                }

                foreach (Infrastructure.MenuGroup menuGroup in extensionMetadata.MenuGroups)
                {
                    MenuGroupViewModel menuGroupViewModel = FindOrCreateMenuGroup(RequestHandler, menuGroupViewModels, menuGroup, _logger);

                    // Take existing items
                    List <MenuItemViewModel> menuItemViewModels = menuGroupViewModel.MenuItems;

                    if (menuGroup.MenuItems == null)
                    {
                        continue;
                    }

                    foreach (Infrastructure.MenuItem menuItem in menuGroup.MenuItems)
                    {
                        // TODO: here add claims verification for menu items
                        menuItemViewModels.Add(
                            new MenuItemViewModelFactory(RequestHandler).Create(menuItem));
                    }

                    // Set all the ordered items back to menu group
                    menuGroupViewModel.MenuItems = menuItemViewModels.OrderBy(mi => mi.Position).ToList();
                }
            }
            return(new MenuViewModel()
            {
                // If two menu groups have the same position, they're ordered alphabetically
                // Don't add if no menu items
                MenuGroups = menuGroupViewModels.Values.Where(m_ => m_.MenuItems.Any()).OrderBy(m_ => m_.Position).ThenBy(m_ => m_.Name)
            });
        }
Beispiel #2
0
 public HttpResponseMessage Post(HttpRequestMessage request, MenuGroupViewModel menuGroupVm)
 {
     return(CreateHttpResponse(request, () =>
     {
         HttpResponseMessage response = null;
         if (!ModelState.IsValid)
         {
             request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
         }
         else
         {
             MenuGroup newMenuGroup = new MenuGroup();
             newMenuGroup.UpdateMenuGroup(menuGroupVm);
             var category = _menuGroupService.Add(newMenuGroup);
             _menuGroupService.SaveChanges();
             response = request.CreateResponse(HttpStatusCode.Created, category);
         }
         return response;
     }));
 }
Beispiel #3
0
        public HttpResponseMessage Put(HttpRequestMessage request, MenuGroupViewModel menuGroupVm)
        {
            return(CreateHttpResponse(request, () =>
            {
                HttpResponseMessage response = null;
                if (!ModelState.IsValid)
                {
                    request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
                }
                else
                {
                    var menuGroupDb = _menuGroupService.GetByID(menuGroupVm.ID);
                    menuGroupDb.UpdateMenuGroup(menuGroupVm);
                    _menuGroupService.Update(menuGroupDb);
                    _menuGroupService.SaveChanges();

                    response = request.CreateResponse(HttpStatusCode.OK);
                }
                return response;
            }));
        }
 public async Task <HttpResponseMessage> Post(HttpRequestMessage request, MenuGroupViewModel menuGroupVm)
 {
     return(await CreateHttpResponse(request, () =>
     {
         HttpResponseMessage response = null;
         if (ModelState.IsValid)
         {
             request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
         }
         else
         {
             //Khoi tao
             MenuGroup newMenuGroup = new MenuGroup();
             newMenuGroup.UpdateMenuGroup(menuGroupVm); //Gan ViewModel sang Model de Insert DB, this
             //Goi Insert
             var menuGroup = _menuGroupService.Add(newMenuGroup);
             _menuGroupService.SaveAsync();
             response = request.CreateResponse(HttpStatusCode.Created, menuGroup);
         }
         return response;
     }));
 }
        public async Task <HttpResponseMessage> Put(HttpRequestMessage request, MenuGroupViewModel menuGroupVm)
        {
            //Khoi tao
            var menuGroupDb = await _menuGroupService.GetById(menuGroupVm.ID);

            //AutoMapper
            menuGroupDb.UpdateMenuGroup(menuGroupVm);
            return(await CreateHttpResponse(request, () =>
            {
                HttpResponseMessage response = null;
                if (ModelState.IsValid)
                {
                    request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
                }
                else
                {
                    _menuGroupService.Update(menuGroupDb);
                    _menuGroupService.SaveAsync();
                    response = request.CreateResponse(HttpStatusCode.OK);
                }
                return response;
            }));
        }
Beispiel #6
0
 public static void UpdateMenuGroup(this MenuGroup menuGroup, MenuGroupViewModel menuGroupVM)
 {
     menuGroup.ID   = menuGroupVM.ID;
     menuGroup.Name = menuGroupVM.Name;
 }
 public static void updateMenuGroup(this MenuGroup menuGroup, MenuGroupViewModel menuGroupVm)
 {
     menuGroup.ID   = menuGroupVm.ID;
     menuGroup.Name = menuGroupVm.Name;
 }