Пример #1
0
        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);
            }
        }
Пример #2
0
        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));
        }