public IActionResult Delete(string id)
        {
            CategoryModelOutput categoryModel = new CategoryModelOutput();

            try
            {
                _logger.Information("Delete Category " + id);
                UserSessionManager usrSession = new UserSessionManager();
                var    user   = User as ClaimsPrincipal;
                string userId = user.Claims.Where(c => c.Type == "USERID").Select(c => c.Value).SingleOrDefault();

                CategoryServices categoryServices = new CategoryServices
                {
                    objUser = usrSession.UserLog(userId)._userInfo
                };

                var response = categoryServices.Delete(id);

                categoryModel.IsSuccess = true;
                categoryModel.Message   = "Success Delete";
                categoryModel.Code      = 200;
            }
            catch (Exception ex)
            {
                _logger.Error("delete Category" + ex.Message);
                categoryModel.IsSuccess = false;
                categoryModel.Message   = "Failed Delete" + ex.Message;
                categoryModel.Code      = 422;
            }
            return(Ok(categoryModel));
        }
        public IActionResult DetailCategory(string id)
        {
            CategoryModelOutput categoryModel = new CategoryModelOutput();

            try
            {
                _logger.Information("Delete Category " + id);
                UserSessionManager usrSession = new UserSessionManager();
                var    user   = User as ClaimsPrincipal;
                string userId = user.Claims.Where(c => c.Type == "USERID").Select(c => c.Value).SingleOrDefault();

                DisplayCategory displayCategory = new DisplayCategory
                {
                    objUser = usrSession.UserLog(userId)._userInfo
                };
                var collection = new List <CategoryModel>((List <CategoryModel>)displayCategory.DisplayDetailCategory(id));

                categoryModel.IsSuccess = true;
                categoryModel.Message   = "Success";
                categoryModel.Code      = 200;
                categoryModel.Data      = collection;
            }
            catch (Exception ex)
            {
                _logger.Error("detail Category" + ex.Message);
                categoryModel.IsSuccess = false;
                categoryModel.Message   = "Failed Delete" + ex.Message;
                categoryModel.Code      = 422;
            }
            return(Ok(categoryModel));
        }
        public IActionResult Store([FromBody] CategoryModel model)
        {
            CategoryModelOutput categoryModel = new CategoryModelOutput();

            try
            {
                if (ModelState.IsValid)
                {
                    _logger.Information("Post Sub Category " + model.category_name);
                    UserSessionManager usrSession = new UserSessionManager();
                    var    user   = User as ClaimsPrincipal;
                    string userId = user.Claims.Where(c => c.Type == "USERID").Select(c => c.Value).SingleOrDefault();

                    CategoryServices categoryServices = new CategoryServices
                    {
                        objUser = usrSession.UserLog(userId)._userInfo
                    };

                    model.category_parentid = model.category_parentid;
                    var response = categoryServices.AddSubCategory(model);

                    categoryModel.IsSuccess = true;
                    categoryModel.Message   = "Success Saving";
                    categoryModel.Code      = 200;
                }
                else
                {
                    _logger.Error("Post Sub Category " + model.category_name);


                    string errordetails = "";
                    var    errors       = new List <string>();
                    foreach (var state in ModelState)
                    {
                        foreach (var error in state.Value.Errors)
                        {
                            string p = error.ErrorMessage;
                            errordetails = errordetails + error.ErrorMessage;
                        }
                    }
                    Dictionary <string, object> dict = new Dictionary <string, object>();
                    dict.Add("error", errordetails);

                    categoryModel.IsSuccess   = false;
                    categoryModel.Message     = "error saving validating";
                    categoryModel.Code        = 422;
                    categoryModel.CustomField = dict;
                }
            }
            catch (Exception ex)
            {
                _logger.Error("Post Sub Category" + ex.Message);
                categoryModel.IsSuccess = false;
                categoryModel.Message   = "Failed Saving" + ex.Message;
                categoryModel.Code      = 422;
            }

            return(Ok(categoryModel));
        }
        public IActionResult Index(PagingParams pagingParams)
        {
            try
            {
                _logger.Information("GetCategory");
                UserSessionManager usrSession = new UserSessionManager();
                var    user   = User as ClaimsPrincipal;
                string userId = user.Claims.Where(c => c.Type == "USERID").Select(c => c.Value).SingleOrDefault();

                CategoryServices categoryServices = new CategoryServices
                {
                    objUser = usrSession.UserLog(userId)._userInfo
                };

                objResponse = categoryServices.GetAllCategoryParent(pagingParams);

                Response.Headers.Add("X-Pagination", objResponse.GetHeader().ToJson());

                var response = new CategoryModelOutput
                {
                    IsSuccess  = true,
                    Code       = 200,
                    Message    = "Success Get Category",
                    Data       = objResponse.List.Select(m => CategoryInfo(m)).ToList(),
                    Pagination = GetLinks(objResponse, "GetCategory")
                };
                return(Ok(response));
            }
            catch (Exception ex)
            {
                _logger.Error(ex.Message.ToString());
                var response = new CategoryModelOutput
                {
                    IsSuccess = false,
                    Code      = 422,
                    Message   = ex.Message.ToString(),
                };
                return(Ok(response));
            }
        }
        public IActionResult IndexSubCategory(PagingParams pagingParams, string id = null, string parent = null)
        {
            try
            {
                _logger.Information("GetSubCategory");
                UserSessionManager usrSession = new UserSessionManager();
                var    user   = User as ClaimsPrincipal;
                string userId = user.Claims.Where(c => c.Type == "USERID").Select(c => c.Value).SingleOrDefault();



                if (id == null)
                {
                    CategoryServices categoryServices = new CategoryServices
                    {
                        objUser = usrSession.UserLog(userId)._userInfo
                    };

                    objResponse = categoryServices.GetAllSubCategories(pagingParams, parent);
                    Response.Headers.Add("X-Pagination", objResponse.GetHeader().ToJson());

                    var response = new CategoryModelOutput
                    {
                        IsSuccess  = true,
                        Code       = 200,
                        Message    = "Success Get Category",
                        Data       = objResponse.List.Select(m => CategoryInfo(m)).ToList(),
                        Pagination = GetLinks(objResponse, "GetSubCategory")
                    };
                    return(Ok(response));
                }
                else
                {
                    DisplayCategory displayCategory = new DisplayCategory
                    {
                        objUser = usrSession.UserLog(userId)._userInfo
                    };
                    var collection = new List <CategoryModel>((IEnumerable <CategoryModel>)displayCategory.DisplayDetailSubCategory(id));

                    var response = new CategoryModelOutput
                    {
                        IsSuccess = true,
                        Code      = 200,
                        Message   = "Success Get Category",
                        Data      = collection,
                    };
                    return(Ok(response));
                }
            }
            catch (Exception ex)
            {
                _logger.Error(ex.Message.ToString());
                var response = new CategoryModelOutput
                {
                    IsSuccess = false,
                    Code      = 422,
                    Message   = ex.Message.ToString(),
                };
                return(Ok(response));
            }
        }