public async Task <string> ExportDataToExcelAsync([FromBody] LeadGetAllRequest request, uint?page = null, uint?pageSize = null) { Uri fileUrl; TimeSpan timeZoneOffset = TimeSpan.Zero; string fileName = $"TestDrive-Leads-{DateTime.UtcNow.FormatUtcDateTimeToUserFriendlyString(timeZoneOffset, "yyyyMMddHHmmss")}"; string worksheetsName = "leads"; using (var uow = UowManager.CurrentOrCreateNew(true)) { ExcelExportSettings <Lead> settings = new ExcelExportSettings <Lead>( fileName, worksheetsName, DomainService, ContentManager, ExcelExportLeadOptionsProvider.GetEntityOptions((r) => r.UseByDefault, (key) => key, timeZoneOffset), BuildRetrieveManyFilter(request), request.Sorting, page ?? 0 * pageSize ?? 0, pageSize); fileUrl = await ExcelExportService <Lead> .ExportDataAsync(settings); } return(fileUrl.ToString()); }
protected virtual Expression <Func <Lead, bool> > BuildRetrieveManyFilter(LeadGetAllRequest request) { return((entity) => (!request.UserId.HasValue || request.UserId.Value == entity.Site.UserId) && (!request.SiteId.HasValue || request.SiteId.Value == entity.SiteId) && (!request.ExpertId.HasValue || request.ExpertId.Value == entity.ExpertId) && (!request.RouteId.HasValue || request.RouteId.Value == entity.RouteId) && (!request.BeverageId.HasValue || request.BeverageId.Value == entity.BeverageId) && (!request.RecievedDateTimeUtc.HasValue || request.RecievedDateTimeUtc.Value <= entity.RecievedUtc) && (!request.BookingDateTimeUtc.HasValue || request.BookingDateTimeUtc.Value <= entity.BookingDateTimeUtc) && (!request.IsReachedByManager.HasValue || request.IsReachedByManager.Value == entity.IsReachedByManager) && (String.IsNullOrEmpty(request.FullName) || !String.IsNullOrEmpty(entity.FullName) && entity.FullName.ToUpper().Contains(request.FullName.ToUpper())) && (String.IsNullOrEmpty(request.FirstName) || !String.IsNullOrEmpty(entity.FirstName) && entity.FirstName.ToUpper().Contains(request.FirstName.ToUpper())) && (String.IsNullOrEmpty(request.SecondName) || !String.IsNullOrEmpty(entity.SecondName) && entity.SecondName.ToUpper().Contains(request.SecondName.ToUpper())) && (String.IsNullOrEmpty(request.Site) || !String.IsNullOrEmpty(entity.Site.Name) && entity.Site.Name.ToUpper().Contains(request.Site.ToUpper())) && (String.IsNullOrEmpty(request.Email) || !String.IsNullOrEmpty(entity.UserEmail) && entity.UserEmail.ToUpper().Contains(request.Email.ToUpper())) && (String.IsNullOrEmpty(request.Phone) || !String.IsNullOrEmpty(entity.UserPhone) && entity.UserPhone.Contains(request.Phone)) && (String.IsNullOrEmpty(request.Expert) || !String.IsNullOrEmpty(entity.Expert.Name) && entity.Expert.Name.ToUpper().Contains(request.Expert.ToUpper())) && (String.IsNullOrEmpty(request.Route) || !String.IsNullOrEmpty(entity.Route.Name) && entity.Route.Name.ToUpper().Contains(request.Route.ToUpper())) && (String.IsNullOrEmpty(request.Beverage) || !String.IsNullOrEmpty(entity.Beverage.Name) && entity.Beverage.Name.ToUpper().Contains(request.Beverage.ToUpper()))); }
public Task <GetAllResponse <LeadDto> > GetAllAsync([FromBody] LeadGetAllRequest request, uint page = 0, uint pageSize = 0) { return(InnerGetAllAsync(BuildRetrieveManyFilter(request), request.Sorting, page, pageSize)); }