public ActionResult ManageResources()
        {
            //set up the model/service and fetch data
            var model = new ResourceListViewModel();

            model.ResourceCategories  = ExigoDAL.GetResourceCategories(new GetResourceCategoriesRequest()).OrderBy(c => c.CategoryOrder);
            model.CountryAvailability = GlobalSettings.Markets.AvailableMarkets;
            model.Languages           = ExigoDAL.GetUniqueLanguages().ToList();
            model.ResourceTypes       = ExigoDAL.GetResourceTypes(new GetResourceTypeRequest()).OrderBy(rt => rt.SortOrder).ToList();
            model.CategoryTranslation = ExigoDAL.GetCategoryTranslations(new GetTranslatedCategoryRequest());
            model.Tags = ExigoDAL.GetTagsForResources(new GetTagsForResourcesRequest());

            //Create ListItems for the Market/Language DropDown
            List <SelectListItem> items = new List <SelectListItem>();

            foreach (var market in model.CountryAvailability)
            {
                SelectListItem item = new SelectListItem()
                {
                    Value    = market.Countries.FirstOrDefault(),
                    Text     = CommonResources.Countries(market.Countries.FirstOrDefault()),
                    Selected = Identity.Current.Country == market.Countries.FirstOrDefault()
                };
                items.Add(item);
            }
            model.CountryList = items;

            return(View(model));
        }
        public ActionResult ResourceItems(Guid?editItemID)
        {
            Guid ID = Guid.NewGuid();

            var model = new ResourceListViewModel();

            model.CountryAvailability = GlobalSettings.Markets.AvailableMarkets;

            model.Languages = ExigoDAL.GetUniqueLanguages().ToList();

            model.ResourceTypes = ExigoDAL.GetResourceTypes(new GetResourceTypeRequest());

            model.Statuses = ExigoDAL.GetResourceStatuses();

            model.ResourceCategories = ExigoDAL.GetResourceCategories(new GetResourceCategoriesRequest());

            model.Tags = ExigoDAL.GetTagsForResources(new GetTagsForResourcesRequest());

            model.IsEdit = false;

            model.CurrentTags = new List <string>();

            if (editItemID != null && editItemID != Guid.Empty)
            {
                ID             = editItemID ?? ID;
                model.Resource = ExigoDAL.GetResourceItems(new GetResourcesRequest()
                {
                    ItemID = ID
                }).FirstOrDefault();

                var TagIDs = ExigoDAL.GetResourceItemTags(new GetResourceItemTagsRequest()
                {
                    ItemID = ID
                }).Select(t => t.TagID);
                model.CurrentTags = model.Tags.Where(t => TagIDs.Contains(t.TagID)).Select(t => t.Name).Distinct().ToList();
                model.Resource.ResourceCategoryItems = ExigoDAL.GetResourceCategoryItems(new GetResourceCategoryItemsRequest()
                {
                    ItemID = ID
                });
                model.Resource.ResourceAvailabilities = ExigoDAL.GetResourceAvailabilities(new GetResourceAvailabilitiesRequest()
                {
                    ItemID = ID
                });
                //SET Default Values for DropDownList on View
                model.TypeID   = model.Resource.TypeID;
                model.StatusID = model.Resource.StatusID;
                model.Language = model.Resource.Language;

                model.IsEdit = true;
            }

            model.EditItemID = editItemID ?? Guid.Empty;

            return(View(model));
        }
        public JsonNetResult GetModal(Guid categoryID, Guid parentCategoryID)
        {
            var model = new ResourceCategoryViewModel();

            try
            {
                //context.ResourceCategories.Where(c => c.ParentID == null && c.CategoryID != categoryID)
                List <SelectListItem>   ListItems = new List <SelectListItem>();
                List <ResourceCategory> categories;
                using (var context = ExigoDAL.Sql())
                {
                    categories = context.Query <ResourceCategory>(@"
                        SELECT 
                            CategoryID,
                            CategoryDescription
                        FROM
                            ExigoWebContext.ResourceCategories
                        WHERE
                            ParentID = @parentid
                        AND
                            CategoryID <> @categoryid

                        ", new { parentid = Guid.Empty, categoryid = categoryID }).ToList();
                    foreach (var cat in categories)
                    {
                        SelectListItem item = new SelectListItem()
                        {
                            Value = cat.CategoryID.ToString(),
                            Text  = cat.CategoryDescription
                        };
                        ListItems.Add(item);
                    }
                }
                model.ParentCategories = ListItems;


                model.allLanguages = ExigoDAL.GetUniqueLanguages().ToList();

                if (categoryID != Guid.Empty)
                {
                    model.Categories = ExigoDAL.GetCategoryTranslations(new GetTranslatedCategoryRequest()
                    {
                        CategoryID = categoryID
                    }).ToList();
                }
                var parentCat = ExigoDAL.GetResourceCategories(new GetResourceCategoriesRequest()
                {
                    CategoryID = categoryID
                }).FirstOrDefault();
                model.SelectedParentCategoryID = parentCat == null ? Guid.Empty : parentCat.ParentID;
                model.hasSubCategories         = categoryID == Guid.Empty ? false : ExigoDAL.GetResourceCategories(new GetResourceCategoriesRequest {
                    ParentID = categoryID
                }).Count() > 0;
                var html = this.RenderPartialViewToString("partials/_categorypartial", model);

                return(new JsonNetResult(new
                {
                    success = true,
                    html = html
                }));
            }
            catch (Exception ex)
            {
                return(new JsonNetResult(new
                {
                    success = false,
                    message = ex.Message
                }));
            }
        }