Ejemplo n.º 1
0
        public ActionResult Create(DataItemViewModel viewModel, int[] attachFileIds, int[] mainImageIds)
        {
            if (ModelState.IsValid)
            {
                DataItem model = AutoMapper.Mapper.Map <DataItem>(viewModel);
                if (attachFileIds != null)
                {
                    model.AttachFiles = new List <File>();
                    foreach (int id in attachFileIds)
                    {
                        File file = fileService.getFile(id);
                        if (file != null)
                        {
                            model.AttachFiles.Add(file);
                        }
                    }
                }
                if (mainImageIds != null && mainImageIds.Length > 0)
                {
                    model.Images = new List <File>();
                    File file = fileService.getFile(mainImageIds[mainImageIds.Length - 1]);
                    if (file != null)
                    {
                        model.Images.Add(file);
                    }
                }
                model.LastUpdatedDate = DateTime.UtcNow;
                var user = memberService.GetUser(User.Identity.Name);
                model.LastUpdatedUserID = user.Id;
                model.CreatedDate       = model.LastUpdatedDate;
                model.CreatedUserID     = user.Id;
                dataItemService.CreateDataItem(model);
                SubMenu subMenu = categoryService.GetCategory(model.SubCategoryID) as SubMenu;
                if (subMenu != null)
                {
                    model.MainMenuID = subMenu.GetMainMenu().Code;
                }

                dataItemService.SaveDataItem();
                if (!string.IsNullOrEmpty(viewModel.ReturnedURL))
                {
                    string[] urls = viewModel.ReturnedURL.Split('/');
                    return(RedirectToAction(urls[1], urls[0]));
                }
                TempData["ReloadData"] = true;
                return(RedirectToAction("Index"));
            }

            // get submenu list
            var                   adminRole = memberService.GetUserRoles().SingleOrDefault(r => r.Name == MemberRoles.Admin.ToString());
            ApplicationUser       currUser  = memberService.GetUser(User.Identity.Name);
            IEnumerable <SubMenu> subMenus  = null;

            if (currUser.Roles.Any(r => r.RoleId == adminRole.Id))
            {
                subMenus          = categoryService.GetDataSubMenus().ToList();
                ViewBag.CountryId = new SelectList(categoryService.GetCountries(), "Code", "CodeName");
            }
            else
            {
                List <SubCategory> country = new List <SubCategory>();
                country.Add(currUser.Country);
                ViewBag.CountryId = new SelectList(country, "Code", "CodeName");
                subMenus          = categoryService.GetSubMenus(currUser) as IEnumerable <SubMenu>;
            }
            List <SubMenu> subMenuFullNames = new List <SubMenu>();

            foreach (var subMenu in subMenus)
            {
                string  subMenuName  = subMenu.GetMainMenu().CodeName + " > " + subMenu.CodeName;
                SubMenu SubViewModel = new SubMenu();
                SubViewModel.Code     = subMenu.Code;
                SubViewModel.CodeName = subMenuName;
                subMenuFullNames.Add(SubViewModel);
            }
            ViewBag.SubCategoryID = new SelectList(subMenuFullNames, "Code", "CodeName");
            if (mainImageIds != null)
            {
                viewModel.Images = new List <File>();
                foreach (var id in mainImageIds)
                {
                    File file = fileService.getFile(id);
                    if (file != null)
                    {
                        viewModel.Images.Add(file);
                    }
                }
            }
            if (attachFileIds != null)
            {
                viewModel.AttachFiles = new List <File>();
                foreach (var id in attachFileIds)
                {
                    File file = fileService.getFile(id);
                    if (file != null)
                    {
                        viewModel.AttachFiles.Add(file);
                    }
                }
            }
            return(View(viewModel));
        }