public ActionResult Post([FromBody] DtoProductListing obj) { var repo = new DapperProductRepository(); var adminRepo = new DapperAdminRepository(); var srv = new SrvProductListingV1(repo, adminRepo, cache); var ret = new DtoProductListingResult(); if (!srv.Exec(network, obj, ref ret)) { return(BadRequest(srv.Error)); } return(Ok(ret)); }
bool ValidadeRequest(DtoProductListing dto) { #region - code - if (dto.page == null) { Error = new DtoServiceError { message = getLanguage(dto._language, 1) }; return(false); } if (dto.page < 0) { Error = new DtoServiceError { message = getLanguage(dto._language, 1) }; return(false); } if (dto.pageSize == null) { Error = new DtoServiceError { message = getLanguage(dto._language, 1) }; return(false); } if (dto.pageSize <= 20) { Error = new DtoServiceError { message = getLanguage(dto._language, 1) }; return(false); } if (dto.orderBy == null || dto.orderBy > 2 || dto.orderBy < 1) { Error = new DtoServiceError { message = getLanguage(dto._language, 1) }; return(false); } return(true); #endregion }
public bool Exec(LocalNetwork network, DtoProductListing request, ref DtoProductListingResult ret) { try { if (!ValidadeRequest(request)) { return(false); } using (var db = GetConnection(network)) { var tagCache = GetCacheTag(request); var cacheOn = !string.IsNullOrEmpty(network.cacheServer); if (cacheOn) { var result = GetCachedData(tagCache, network.cacheServer, 1); if (result != null) { ret = JsonConvert.DeserializeObject <DtoProductListingResult>(result); return(true); } } int total = 0; var lst = repository.GetProducts(db, request.tag, request.category, (int)request.page, (int)request.pageSize, (int)request.orderBy, ref total); ret.totalRecords = total; ret.results = new List <DtoProduct>(); var threads = new List <int> { 1, 2 }; for (int i = 0; i < lst.Count; i++) { var item = lst[i]; var finalProd = new DtoProduct { name = item.stName, serial = "45445454564456546546" }; Parallel.ForEach(threads, th => { switch (th) { case 1: { #region - brand - if (cacheOn) { var tagCache_brand = "Brand_" + item.fkBrand; var result = GetCachedData(tagCache_brand, network.cacheServer, 10); if (result != null) { var brandCache = JsonConvert.DeserializeObject <Brand>(result); finalProd.brand = brandCache.stName; } else { using (var db_brand = GetConnection(network)) { var brandCache = adminRepository.GetBrand(db_brand, item.fkBrand); finalProd.brand = brandCache.stName; var retStr = System.Text.Json.JsonSerializer.Serialize(brandCache); UpdateCachedData(tagCache_brand, retStr, network.cacheServer, 10); } } } else { using (var db_brand = GetConnection(network)) { var brandDB = adminRepository.GetBrand(db_brand, item.fkBrand); finalProd.brand = brandDB.stName; } } #endregion break; } case 2: { #region - category - if (cacheOn) { var tagCache_Categ = "Category_" + item.fkCategory; var result = GetCachedData(tagCache_Categ, network.cacheServer, 10); if (result != null) { var brandCache = JsonConvert.DeserializeObject <Category>(result); finalProd.brand = brandCache.stName; } else { using (var db_categ = GetConnection(network)) { var categoryCache = adminRepository.GetCategory(db_categ, item.fkCategory); finalProd.category = categoryCache.stName; var retStr = System.Text.Json.JsonSerializer.Serialize(categoryCache); UpdateCachedData(tagCache_Categ, retStr, network.cacheServer, 10); } } } else { using (var db_categ = GetConnection(network)) { var categoryCache = adminRepository.GetCategory(db_categ, item.fkCategory); finalProd.category = categoryCache.stName; } } #endregion break; } } }); ret.results.Add(finalProd); } if (cacheOn) { var retStr = System.Text.Json.JsonSerializer.Serialize(ret); UpdateCachedData(tagCache, retStr, network.cacheServer, 1); } } return(true); } catch (Exception ex) { Error = new DtoServiceError { message = getLanguage(0, 0), debugInfo = ex.ToString() }; return(false); } }
public string GetCacheTag(DtoProductListing request) { return("ProductListing_" + (request.tag ?? "") + "_" + (request.category?.ToString() ?? "") + "_" + request.page + "_" + request.pageSize + "_" + request.orderBy); }