public async Task <PagedResults <LogViolationResponse> > GetAssetLogViolation(PagingRequestLogViolation request, int brandId) { List <LogViolationResponse> rs = null; List <LogViolationResponse> list = null; try { if (request.StoreId != 0) { var store = await _unitOfWork.Repository <Store>().GetAll().Where(x => x.Id == request.StoreId && x.Status != (int)Status.Deleted && x.Status != (int)Status.Reject && x.Status != (int)Status.NeedApproval).FirstOrDefaultAsync(); if (store == null) { return(null); } var assets = store.Assets.Where(x => x.StoreId == store.Id && x.IsDeleted != true).ToList(); assets.ForEach(x => { if (list == null) { list = new List <LogViolationResponse>(); } var temp = x.ViolationLogs?.Select(a => new LogViolationResponse { Id = a.Id, AssetId = x.Id, AssetName = x.Name, Description = a.Description, EndTime = a.EndTime, StartTime = a.StartTime, StoreId = x.StoreId, StoreName = x.Store?.Name, Geom = a.Geom?.AsText(), Severity = a.Severity, TypeViolation = a.TypeViolation }).ToList(); list.AddRange(temp); }); } else { var stores = await _unitOfWork.Repository <Store>().GetAll().Where(x => x.BrandId == brandId && x.Status != (int)Status.Deleted && x.Status != (int)Status.Reject && x.Status != (int)Status.NeedApproval).ToListAsync(); if (stores.Count == 0) { return(null); } var assets = await _unitOfWork.Repository <Asset>().GetAll().Where(x => !x.IsDeleted).ToListAsync(); assets = assets.Where(x => stores.Any(f => x.StoreId == f.Id)).ToList(); assets.ForEach(x => { if (list == null) { list = new List <LogViolationResponse>(); } var temp = x.ViolationLogs?.Select(a => new LogViolationResponse { Id = a.Id, AssetId = x.Id, AssetName = x.Name, Description = a.Description, EndTime = a.EndTime, StartTime = a.StartTime, StoreId = x.StoreId, StoreName = x.Store?.Name, Geom = a.Geom?.AsText(), Severity = a.Severity, TypeViolation = a.TypeViolation }).ToList(); list.AddRange(temp); }); } rs = PageHelper <LogViolationResponse> .Sorting(request.SortType, list.AsEnumerable(), request.ColName); var result = PageHelper <LogViolationResponse> .Paging(rs, request.Page, request.PageSize); return(result); } catch (Exception e) { throw new CrudException(HttpStatusCode.BadRequest, "Get Asset Log violation Error!!!", e.InnerException?.Message); } }
public async Task <ActionResult <PagedResults <LogViolationResponse> > > GetAssetsLogViolation([FromQuery] PagingRequestLogViolation request) { int brandId = Convert.ToInt32(User.FindFirst("BrandId")?.Value); var rs = await _assetsService.GetAssetLogViolation(request, brandId); return(Ok(rs)); }