public async Task <FieldWorkResponseModel> GetFieldWorkList() { FieldWorkResponseModel fieldWorkResponseModel = new FieldWorkResponseModel(); List <FieldWorkModel> fieldWorkModels = new List <FieldWorkModel>(); List <WeightDetail> weightDetail = await _agricultureRepository.GetFieldWorkList(); List <UserPriceDetail> userPriceDetail = await _priceRepository.GetUserPriceDetailList(); foreach (var item in weightDetail.OrderByDescending(i => i.Date)) { fieldWorkModels.Add(new FieldWorkModel() { FullName = item.User.FirstName + " " + item.User.LastName, Weight = item.Weight, WeightType = item.WeightType, Date = item.Date, UserId = item.UserId, Id = item.Id, // CreditAmount = userPriceDetail.Sum(s => s.CreditAmount) ?? 0, // DebitAmount = userPriceDetail.Sum(s => s.DebitAmount) ?? 0 }); } fieldWorkResponseModel.DataList = fieldWorkModels; fieldWorkResponseModel.IsSuccess = true; fieldWorkResponseModel.LastAccessedTs = weightDetail.Max(i => i.Date); fieldWorkResponseModel.TotalStock = weightDetail.Sum(i => i.Weight); fieldWorkResponseModel.StockAmount = weightDetail.Sum(i => i.Weight * i.Price.UnitPrice); fieldWorkResponseModel.CreditAmount = userPriceDetail.Sum(s => s.CreditAmount) ?? 0; fieldWorkResponseModel.DebitAmount = userPriceDetail.Sum(s => s.DebitAmount) ?? 0; return(fieldWorkResponseModel); }
public async Task <FieldWorkResponseModel> SearchFieldWork(SearchModel searchModel) { FieldWorkResponseModel fieldWorkResponseModel = new FieldWorkResponseModel(); List <FieldWorkModel> fieldWorkModels = new List <FieldWorkModel>(); List <WeightDetail> result = await _agricultureRepository.GetFieldWorkList(); if (searchModel.UserId > 0) { result = result.Where(f => f.UserId == searchModel.UserId).ToList(); } if (searchModel.StartDate != DateTime.MinValue) { result = result.Where(f => f.Date >= ConvertDate(searchModel.StartDate)).ToList(); } if (searchModel.EndDate != DateTime.MinValue) { result = result.Where(f => f.Date <= ConvertDate(searchModel.EndDate.AddDays(1).AddTicks(-1))).ToList(); } List <UserPriceDetail> userPriceDetail = await _priceRepository.GetUserPriceDetailByUserId(searchModel.UserId); foreach (var item in result.OrderByDescending(i => i.Date)) { fieldWorkModels.Add(new FieldWorkModel() { FullName = item.User.FullName, Weight = item.Weight, WeightType = item.WeightType, Date = item.Date, UserId = item.UserId, Id = item.Id, // CreditAmount = userPriceDetail.Sum(s => s.CreditAmount) ?? 0, // DebitAmount = userPriceDetail.Sum(s => s.DebitAmount) ?? 0 }); } fieldWorkResponseModel.DataList = fieldWorkModels; fieldWorkResponseModel.IsSuccess = true; fieldWorkResponseModel.LastAccessedTs = result.Max(i => i.Date); fieldWorkResponseModel.TotalStock = result.Sum(i => i.Weight); fieldWorkResponseModel.StockAmount = result.Sum(i => i.Weight * i.Price.UnitPrice); fieldWorkResponseModel.DebitAmount = userPriceDetail.Sum(i => i.DebitAmount) ?? 0; fieldWorkResponseModel.CreditAmount = userPriceDetail.Sum(s => s.CreditAmount) ?? 0; return(fieldWorkResponseModel); }
public async Task <List <FieldWorkModel> > SearchFieldWorkByUserId(int id, int viewTypeId) { FieldWorkResponseModel fieldWorkResponseModel = new FieldWorkResponseModel(); List <FieldWorkModel> fieldWorkModels = new List <FieldWorkModel>(); List <WeightDetail> weightDetail = await _agricultureRepository.SearchFieldWorkByUserId(id); if (viewTypeId == 1) { foreach (var item in weightDetail.OrderByDescending(i => i.Date)) { fieldWorkModels.Add(new FieldWorkModel() { FullName = item.User.FullName, Weight = item.Weight, WeightType = item.WeightType, Date = item.Date, UserId = item.UserId, Id = item.Id }); } } else { foreach (var item in weightDetail.GroupBy(i => i.UserId)) { List <UserPriceDetail> userPriceDetail = await _priceRepository.GetUserPriceDetailByUserId(item.Key); fieldWorkModels.Add(new FieldWorkModel() { FullName = item.FirstOrDefault().User.FullName, Weight = item.Sum(s => s.Weight), WeightType = item.FirstOrDefault().WeightType, Date = item.FirstOrDefault().Date, UserId = item.Key, CreditAmount = userPriceDetail.Sum(s => s.CreditAmount) ?? 0, DebitAmount = userPriceDetail.Sum(s => s.DebitAmount) ?? 0, StockAmount = item.Sum(s => s.Weight * s.Price.UnitPrice), TotalStock = item.Sum(s => s.Weight) }); } } return(fieldWorkModels); }