public async Task <PagedResultDto <IncidentUserLookupTableDto> > GetAllUserForLookupTable(GetAllForLookupTableInput input) { using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MustHaveTenant, AbpDataFilters.MayHaveTenant)) // BYPASS TENANT FILTER { var tenantInfo = await TenantManager.GetTenantInfo(); var crossTenantPermissions = await TenantManager.GetCrossTenantPermissions(tenantInfo, "User"); var query = _lookup_userRepository.GetAll() .WhereIf(tenantInfo.Tenant.Id != 0 && crossTenantPermissions != null, e => crossTenantPermissions.Contains((int)e.TenantId)) // CROSS TENANT AUTH .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => e.Name.Contains(input.Filter)); var totalCount = await query.CountAsync(); var userList = await query .PageBy(input) .ToListAsync(); var lookupTableDtoList = new List <IncidentUserLookupTableDto>(); foreach (var user in userList) { lookupTableDtoList.Add(new IncidentUserLookupTableDto { Id = user.Id, DisplayName = String.Format("{0} [{1}]", user.Name, user.EmailAddress) }); } return(new PagedResultDto <IncidentUserLookupTableDto>( totalCount, lookupTableDtoList )); } }
public async Task <List <GetWorkorderUpdateItemsForViewDto> > GetWorkorderItems(GetWorkorderUpdateItemsInput input) { var tenantInfo = await TenantManager.GetTenantInfo(); var crossTenantPermissions = await TenantManager.GetCrossTenantPermissions(tenantInfo, "WorkOrder"); var workOrders = _workOrderUpdateRepository.GetAll() .Where(w => w.ItemTypeFk != null) .WhereIf(tenantInfo.Tenant.Id != 0 && crossTenantPermissions != null, e => crossTenantPermissions.Contains((int)e.TenantId)) // CROSS TENANT AUTH .Include(w => w.ItemTypeFk) .Where(w => !w.IsDeleted) .Where(w => w.CreationTime >= DateTime.Now.AddDays(-input.Days)) .ToList(); var itemsConsumed = from w in workOrders group w by w.ItemTypeFk into s select new GetWorkorderUpdateItemsForViewDto() { Item = new Ems.Quotations.Dtos.ItemTypeDto { Type = s.Key.Type, Description = s.Key.Description }, Consumed = s.Count() }; var result = itemsConsumed.OrderByDescending(a => a.Consumed).Take(10).ToList(); return(result); }
public async Task <List <GetAssetsWithWorkordersForViewDto> > GetAssetsWithWorkorders(GetAssetsWithWorkordersInput input) { var tenantInfo = await TenantManager.GetTenantInfo(); var crossTenantPermissions = await TenantManager.GetCrossTenantPermissions(tenantInfo, _entityType); var workOrders = _workOrderRepository.GetAll() .Where(w => w.AssetOwnershipFk != null) .WhereIf(tenantInfo.Tenant.Id != 0 && crossTenantPermissions != null, e => crossTenantPermissions.Contains((int)e.TenantId)) // CROSS TENANT AUTH .Include(w => w.AssetOwnershipFk.AssetFk) .Where(w => !w.IsDeleted) .Where(w => w.StartDate >= DateTime.Now.AddDays(-input.Days)) .ToList(); var assetsWithWorkOrders = from w in workOrders group w by w.AssetOwnershipFk.AssetFk into a select new GetAssetsWithWorkordersForViewDto() { Asset = new AssetDto { Reference = a.Key.Reference, Description = a.Key.Description }, Workorders = a.Count() }; var result = assetsWithWorkOrders.OrderByDescending(a => a.Workorders).Take(10).ToList(); return(result); }
public async Task <PagedResultDto <CustomerInvoiceLeaseItemLookupTableDto> > GetAllLeaseItemForLookupTable(GetAllForLookupTableInput input) { var tenantInfo = await TenantManager.GetTenantInfo(); var crossTenantPermissions = await TenantManager.GetCrossTenantPermissions(tenantInfo, "LeaseItem"); IQueryable <LeaseItem> query = _lookup_leaseItemRepository.GetAll() .Where(e => DateTime.UtcNow >= e.StartDate && DateTime.UtcNow <= e.EndDate) .WhereIf(tenantInfo.Tenant.Id != 0 && crossTenantPermissions != null, e => crossTenantPermissions.Contains((int)e.TenantId)) // CROSS TENANT AUTH .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => e.Item.Contains(input.Filter) || e.Description.Contains(input.Filter)); var totalCount = await query.CountAsync(); var leaseItemList = await query .PageBy(input) .ToListAsync(); var lookupTableDtoList = new List <CustomerInvoiceLeaseItemLookupTableDto>(); foreach (var leaseItem in leaseItemList) { lookupTableDtoList.Add(new CustomerInvoiceLeaseItemLookupTableDto { Id = leaseItem.Id, DisplayName = leaseItem.Item + " (" + leaseItem.Description + ")" }); } return(new PagedResultDto <CustomerInvoiceLeaseItemLookupTableDto>( totalCount, lookupTableDtoList )); }
public async Task <PagedResultDto <LeaseItemAssetLookupTableDto> > GetAllAssetForLookupTable(GetAllForLookupTableInput input) { var tenantInfo = await TenantManager.GetTenantInfo(); var crossTenantPermissions = await TenantManager.GetCrossTenantPermissions(tenantInfo, _entityType); List <int?> myAssetIds = new List <int?>(); if (tenantInfo.Tenant.TenantType == "A") { myAssetIds = _assetOwnershipRepository.GetAll() .Where(e => e.AssetOwnerId == tenantInfo.AssetOwner.Id) .Select(e => e.AssetId) .ToList(); } var query = _lookup_assetRepository.GetAll() .WhereIf(tenantInfo.Tenant.TenantType == "A", e => myAssetIds.Contains(e.Id)) // Get all my Assets .WhereIf(tenantInfo.Tenant.Id != 0 && tenantInfo.Tenant.TenantType != "A" && crossTenantPermissions != null, e => crossTenantPermissions.Contains((int)e.TenantId)) // CROSS TENANT AUTH .WhereIf( !string.IsNullOrWhiteSpace(input.Filter), e => e.Reference.ToString().Contains(input.Filter) ); var totalCount = await query.CountAsync(); var assetList = await query .PageBy(input) .ToListAsync(); var lookupTableDtoList = new List <LeaseItemAssetLookupTableDto>(); foreach (var asset in assetList) { lookupTableDtoList.Add(new LeaseItemAssetLookupTableDto { Id = asset.Id, DisplayName = asset.Reference?.ToString() }); } return(new PagedResultDto <LeaseItemAssetLookupTableDto>( totalCount, lookupTableDtoList )); }
public async Task <PagedResultDto <QuotationDetailWorkOrderLookupTableDto> > GetAllWorkOrderForLookupTable(GetAllForLookupTableInput input) { using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MustHaveTenant, AbpDataFilters.MayHaveTenant)) // BYPASS TENANT FILTER to include Users { var tenantInfo = await TenantManager.GetTenantInfo(); var crossTenantPermissions = await TenantManager.GetCrossTenantPermissions(tenantInfo, "WorkOrder"); var query = _lookup_workOrderRepository .GetAll() .WhereIf(tenantInfo.Tenant.Id != 0 && crossTenantPermissions != null, e => crossTenantPermissions.Contains((int)e.TenantId)) // CROSS TENANT AUTH .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => e.Subject.Contains(input.Filter) ); var totalCount = await query.CountAsync(); var workOrderList = await query .PageBy(input) .ToListAsync(); var lookupTableDtoList = new List <QuotationDetailWorkOrderLookupTableDto>(); foreach (var workOrder in workOrderList) { lookupTableDtoList.Add(new QuotationDetailWorkOrderLookupTableDto { Id = workOrder.Id, DisplayName = workOrder.Subject?.ToString() }); } return(new PagedResultDto <QuotationDetailWorkOrderLookupTableDto>( totalCount, lookupTableDtoList )); } }
public async Task <FileDto> GetAssetsToExcel(GetAllAssetsForExcelInput input) { var tenantInfo = await TenantManager.GetTenantInfo(); var crossTenantPermissions = await TenantManager.GetCrossTenantPermissions(tenantInfo, _entityType); List <int?> myAssetIds = new List <int?>(); if (tenantInfo.Tenant.TenantType == "A") { myAssetIds = _assetOwnershipRepository.GetAll() .Where(e => e.AssetOwnerId == tenantInfo.AssetOwner.Id) .Select(e => e.AssetId) .ToList(); } var filteredAssets = _assetRepository.GetAll() .Include(e => e.AssetClassFk) .Include(e => e.AssetStatusFk) .WhereIf(tenantInfo.Tenant.TenantType == "A", e => myAssetIds.Contains(e.Id)) // Get all my Assets .WhereIf(tenantInfo.Tenant.Id != 0 && tenantInfo.Tenant.TenantType != "A" && crossTenantPermissions != null, e => crossTenantPermissions.Contains((int)e.TenantId)) // CROSS TENANT AUTH .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => false || e.Reference.Contains(input.Filter) || e.VehicleRegistrationNo.Contains(input.Filter) || e.Location.Contains(input.Filter) || e.SerialNumber.Contains(input.Filter) || e.EngineNo.Contains(input.Filter) || e.ChassisNo.Contains(input.Filter) || e.Description.Contains(input.Filter) || e.PurchaseOrderNo.Contains(input.Filter) || e.AssetLoc8GUID.Contains(input.Filter)) .WhereIf(!string.IsNullOrWhiteSpace(input.ReferenceFilter), e => e.Reference.ToLower() == input.ReferenceFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.VehicleRegistrationNoFilter), e => e.VehicleRegistrationNo.ToLower() == input.VehicleRegistrationNoFilter.ToLower().Trim()) .WhereIf(input.IsExternalAssetFilter > -1, e => Convert.ToInt32(e.IsExternalAsset) == input.IsExternalAssetFilter) .WhereIf(!string.IsNullOrWhiteSpace(input.LocationFilter), e => e.Location.ToLower() == input.LocationFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.SerialNumberFilter), e => e.SerialNumber.ToLower() == input.SerialNumberFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.EngineNoFilter), e => e.EngineNo.ToLower() == input.EngineNoFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.ChassisNoFilter), e => e.ChassisNo.ToLower() == input.ChassisNoFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.DescriptionFilter), e => e.Description.ToLower() == input.DescriptionFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.PurchaseOrderNoFilter), e => e.PurchaseOrderNo.ToLower() == input.PurchaseOrderNoFilter.ToLower().Trim()) .WhereIf(input.MinPurchaseDateFilter != null, e => e.PurchaseDate >= input.MinPurchaseDateFilter) .WhereIf(input.MaxPurchaseDateFilter != null, e => e.PurchaseDate <= input.MaxPurchaseDateFilter) .WhereIf(input.MinPurchaseCostFilter != null, e => e.PurchaseCost >= input.MinPurchaseCostFilter) .WhereIf(input.MaxPurchaseCostFilter != null, e => e.PurchaseCost <= input.MaxPurchaseCostFilter) .WhereIf(!string.IsNullOrWhiteSpace(input.AssetLoc8GUIDFilter), e => e.AssetLoc8GUID.ToLower() == input.AssetLoc8GUIDFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.AssetClassClassFilter), e => e.AssetClassFk != null && e.AssetClassFk.Class.ToLower() == input.AssetClassClassFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.AssetStatusStatusFilter), e => e.AssetStatusFk != null && e.AssetStatusFk.Status.ToLower() == input.AssetStatusStatusFilter.ToLower().Trim()); var query = (from o in filteredAssets join o1 in _lookup_assetClassRepository.GetAll() on o.AssetClassId equals o1.Id into j1 from s1 in j1.DefaultIfEmpty() join o2 in _lookup_assetStatusRepository.GetAll() on o.AssetStatusId equals o2.Id into j2 from s2 in j2.DefaultIfEmpty() select new GetAssetForViewDto() { Asset = new AssetDto { Reference = o.Reference, VehicleRegistrationNo = o.VehicleRegistrationNo, IsExternalAsset = o.IsExternalAsset, Location = o.Location, SerialNumber = o.SerialNumber, EngineNo = o.EngineNo, ChassisNo = o.ChassisNo, Description = o.Description, PurchaseOrderNo = o.PurchaseOrderNo, PurchaseDate = o.PurchaseDate, PurchaseCost = o.PurchaseCost, AssetLoc8GUID = o.AssetLoc8GUID, Id = o.Id }, AssetClassClass = s1 == null ? "" : s1.Class.ToString(), AssetStatusStatus = s2 == null ? "" : s2.Status.ToString() }); var assetListDtos = await query.ToListAsync(); return(_assetsExcelExporter.ExportToFile(assetListDtos)); }
public async Task <PagedResultDto <GetIncidentForViewDto> > GetAll(GetAllIncidentsInput input) { using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MustHaveTenant, AbpDataFilters.MayHaveTenant)) // BYPASS TENANT FILTER to include Users { var tenantInfo = await TenantManager.GetTenantInfo(); var crossTenantPermissions = await TenantManager.GetCrossTenantPermissions(tenantInfo, _entityType); var filteredIncidents = _incidentRepository.GetAll() .Include(e => e.IncidentPriorityFk) .Include(e => e.IncidentStatusFk) .Include(e => e.CustomerFk) .Include(e => e.AssetFk) .Include(e => e.SupportItemFk) .Include(e => e.IncidentTypeFk) .Include(e => e.UserFk) .WhereIf(tenantInfo.Tenant.Id != 0 && crossTenantPermissions != null, e => crossTenantPermissions.Contains((int)e.TenantId)) // CROSS TENANT AUTH .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => false || e.Description.Contains(input.Filter) || e.Location.Contains(input.Filter) || e.Remarks.Contains(input.Filter)) .WhereIf(!string.IsNullOrWhiteSpace(input.DescriptionFilter), e => e.Description.ToLower() == input.DescriptionFilter.ToLower().Trim()) .WhereIf(input.MinIncidentDateFilter != null, e => e.IncidentDate >= input.MinIncidentDateFilter) .WhereIf(input.MaxIncidentDateFilter != null, e => e.IncidentDate <= input.MaxIncidentDateFilter) .WhereIf(!string.IsNullOrWhiteSpace(input.LocationFilter), e => e.Location.ToLower() == input.LocationFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.RemarksFilter), e => e.Remarks.ToLower() == input.RemarksFilter.ToLower().Trim()) .WhereIf(input.MinResolvedAtFilter != null, e => e.ResolvedAt >= input.MinResolvedAtFilter) .WhereIf(input.MaxResolvedAtFilter != null, e => e.ResolvedAt <= input.MaxResolvedAtFilter) .WhereIf(!string.IsNullOrWhiteSpace(input.IncidentPriorityPriorityFilter), e => e.IncidentPriorityFk != null && e.IncidentPriorityFk.Priority.ToLower() == input.IncidentPriorityPriorityFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.IncidentStatusStatusFilter), e => e.IncidentStatusFk != null && e.IncidentStatusFk.Status.ToLower() == input.IncidentStatusStatusFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.CustomerNameFilter), e => e.CustomerFk != null && e.CustomerFk.Name.ToLower() == input.CustomerNameFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.AssetReferenceFilter), e => e.AssetFk != null && e.AssetFk.Reference.ToLower() == input.AssetReferenceFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.SupportItemDescriptionFilter), e => e.SupportItemFk != null && e.SupportItemFk.Description.ToLower() == input.SupportItemDescriptionFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.IncidentTypeTypeFilter), e => e.IncidentTypeFk != null && e.IncidentTypeFk.Type.ToLower() == input.IncidentTypeTypeFilter.ToLower().Trim()) .WhereIf(!string.IsNullOrWhiteSpace(input.UserNameFilter), e => e.UserFk != null && e.UserFk.Name.ToLower() == input.UserNameFilter.ToLower().Trim()); var pagedAndFilteredIncidents = filteredIncidents .OrderBy(input.Sorting ?? "id asc") .PageBy(input); var incidents = from o in pagedAndFilteredIncidents join o1 in _lookup_incidentPriorityRepository.GetAll() on o.IncidentPriorityId equals o1.Id into j1 from s1 in j1.DefaultIfEmpty() join o2 in _lookup_incidentStatusRepository.GetAll() on o.IncidentStatusId equals o2.Id into j2 from s2 in j2.DefaultIfEmpty() join o3 in _lookup_customerRepository.GetAll() on o.CustomerId equals o3.Id into j3 from s3 in j3.DefaultIfEmpty() join o4 in _lookup_assetRepository.GetAll() on o.AssetId equals o4.Id into j4 from s4 in j4.DefaultIfEmpty() join o5 in _lookup_supportItemRepository.GetAll() on o.SupportItemId equals o5.Id into j5 from s5 in j5.DefaultIfEmpty() join o6 in _lookup_incidentTypeRepository.GetAll() on o.IncidentTypeId equals o6.Id into j6 from s6 in j6.DefaultIfEmpty() join o7 in _lookup_userRepository.GetAll() on o.UserId equals o7.Id into j7 from s7 in j7.DefaultIfEmpty() select new GetIncidentForViewDto() { Incident = new IncidentDto { Description = o.Description, IncidentDate = o.IncidentDate, Location = o.Location, Remarks = o.Remarks, ResolvedAt = o.ResolvedAt, Id = o.Id }, IncidentPriorityPriority = s1 == null ? "" : s1.Priority.ToString(), IncidentStatusStatus = s2 == null ? "" : s2.Status.ToString(), CustomerName = s3 == null ? "" : s3.Name.ToString(), AssetReference = s4 == null ? "" : s4.Reference.ToString(), SupportItemDescription = s5 == null ? "" : s5.Description.ToString(), IncidentTypeType = s6 == null ? "" : s6.Type.ToString(), UserName = s7 == null ? "" : s7.Name.ToString() }; var totalCount = await filteredIncidents.CountAsync(); return(new PagedResultDto <GetIncidentForViewDto>( totalCount, await incidents.ToListAsync() )); } }
public async Task <PagedResultDto <IncidentAssetLookupTableDto> > GetAllAssetForLookupTable(GetAllForLookupTableInput input) { using (_unitOfWorkManager.Current.DisableFilter(AbpDataFilters.MustHaveTenant, AbpDataFilters.MayHaveTenant)) // BYPASS TENANT FILTER to include Users { var tenantInfo = await TenantManager.GetTenantInfo(); var crossTenantPermissions = await TenantManager.GetCrossTenantPermissions(tenantInfo, "Asset"); IQueryable <Asset> query; switch (tenantInfo.Tenant.TenantType) { case "C": query = _leaseItemRepository .GetAll() .Include(e => e.AssetFk) .Include(e => e.LeaseAgreementFk) .Where(e => e.LeaseAgreementFk.CustomerId == tenantInfo.Customer.Id) .WhereIf(tenantInfo.Tenant.Id != 0 && crossTenantPermissions != null, e => crossTenantPermissions.Contains((int)e.TenantId)) // CROSS TENANT AUTH .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => e.AssetFk.Reference.Contains(input.Filter)) .Select(s => s.AssetFk); break; case "V": query = _lookup_supportItemRepository .GetAll() .Include(e => e.AssetFk) .Include(e => e.SupportContractFk) .Where(e => e.SupportContractFk.VendorId == tenantInfo.Vendor.Id) .WhereIf(tenantInfo.Tenant.Id != 0 && crossTenantPermissions != null, e => crossTenantPermissions.Contains((int)e.TenantId)) // CROSS TENANT AUTH .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => e.AssetFk.Reference.Contains(input.Filter)) .Select(s => s.AssetFk); break; case "A": var myAssetIds = _assetOwnershipRepository.GetAll() .Where(e => e.AssetOwnerId == tenantInfo.AssetOwner.Id) .Select(e => e.AssetId) .ToList(); query = _lookup_assetRepository .GetAll() .Where(e => myAssetIds.Contains(e.Id)) // Get all my Assets .WhereIf(tenantInfo.Tenant.Id != 0 && crossTenantPermissions != null, e => crossTenantPermissions.Contains((int)e.TenantId)) // CROSS TENANT AUTH .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => e.Reference.Contains(input.Filter)); break; case "H": query = _lookup_assetRepository .GetAll() .WhereIf(!string.IsNullOrWhiteSpace(input.Filter), e => e.Reference.Contains(input.Filter)); break; default: throw new Exception($"Cannot determine TenantType for {tenantInfo.Tenant.TenancyName}!"); } var totalCount = await query.CountAsync(); var assetList = await query .PageBy(input) .ToListAsync(); var lookupTableDtoList = new List <IncidentAssetLookupTableDto>(); foreach (var asset in assetList) { lookupTableDtoList.Add(new IncidentAssetLookupTableDto { Id = asset.Id, DisplayName = asset.Reference }); } return(new PagedResultDto <IncidentAssetLookupTableDto>( totalCount, lookupTableDtoList )); } }