コード例 #1
0
        public async Task <int> Count(ContractPaymentHistoryFilter filter)
        {
            IQueryable <ContractPaymentHistoryDAO> ContractPaymentHistories = DataContext.ContractPaymentHistory.AsNoTracking();

            ContractPaymentHistories = DynamicFilter(ContractPaymentHistories, filter);
            return(await ContractPaymentHistories.CountAsync());
        }
コード例 #2
0
        public ContractPaymentHistoryFilter ToFilter(ContractPaymentHistoryFilter filter)
        {
            if (filter.OrFilter == null)
            {
                filter.OrFilter = new List <ContractPaymentHistoryFilter>();
            }
            if (CurrentContext.Filters == null || CurrentContext.Filters.Count == 0)
            {
                return(filter);
            }
            foreach (var currentFilter in CurrentContext.Filters)
            {
                ContractPaymentHistoryFilter subFilter = new ContractPaymentHistoryFilter();
                filter.OrFilter.Add(subFilter);
                List <FilterPermissionDefinition> FilterPermissionDefinitions = currentFilter.Value;
                foreach (FilterPermissionDefinition FilterPermissionDefinition in FilterPermissionDefinitions)
                {
                    if (FilterPermissionDefinition.Name == nameof(subFilter.Id))
                    {
                        subFilter.Id = FilterPermissionDefinition.IdFilter;
                    }
                    if (FilterPermissionDefinition.Name == nameof(subFilter.ContractId))
                    {
                        subFilter.ContractId = FilterPermissionDefinition.IdFilter;
                    }
                    if (FilterPermissionDefinition.Name == nameof(subFilter.PaymentMilestone))
                    {
                        subFilter.PaymentMilestone = FilterPermissionDefinition.StringFilter;
                    }

                    if (FilterPermissionDefinition.Name == nameof(subFilter.PaymentPercentage))
                    {
                        subFilter.PaymentPercentage = FilterPermissionDefinition.DecimalFilter;
                    }



                    if (FilterPermissionDefinition.Name == nameof(subFilter.PaymentAmount))
                    {
                        subFilter.PaymentAmount = FilterPermissionDefinition.DecimalFilter;
                    }



                    if (FilterPermissionDefinition.Name == nameof(subFilter.Description))
                    {
                        subFilter.Description = FilterPermissionDefinition.StringFilter;
                    }
                }
            }
            return(filter);
        }
コード例 #3
0
        public async Task <List <ContractPaymentHistory> > List(ContractPaymentHistoryFilter filter)
        {
            if (filter == null)
            {
                return(new List <ContractPaymentHistory>());
            }
            IQueryable <ContractPaymentHistoryDAO> ContractPaymentHistoryDAOs = DataContext.ContractPaymentHistory.AsNoTracking();

            ContractPaymentHistoryDAOs = DynamicFilter(ContractPaymentHistoryDAOs, filter);
            ContractPaymentHistoryDAOs = DynamicOrder(ContractPaymentHistoryDAOs, filter);
            List <ContractPaymentHistory> ContractPaymentHistories = await DynamicSelect(ContractPaymentHistoryDAOs, filter);

            return(ContractPaymentHistories);
        }
コード例 #4
0
        public async Task <bool> ValidateId(ContractPaymentHistory ContractPaymentHistory)
        {
            ContractPaymentHistoryFilter ContractPaymentHistoryFilter = new ContractPaymentHistoryFilter
            {
                Skip = 0,
                Take = 10,
                Id   = new IdFilter {
                    Equal = ContractPaymentHistory.Id
                },
                Selects = ContractPaymentHistorySelect.Id
            };

            int count = await UOW.ContractPaymentHistoryRepository.Count(ContractPaymentHistoryFilter);

            if (count == 0)
            {
                ContractPaymentHistory.AddError(nameof(ContractPaymentHistoryValidator), nameof(ContractPaymentHistory.Id), ErrorCode.IdNotExisted);
            }
            return(count == 1);
        }
コード例 #5
0
        public async Task <List <ContractPaymentHistory> > List(ContractPaymentHistoryFilter ContractPaymentHistoryFilter)
        {
            try
            {
                List <ContractPaymentHistory> ContractPaymentHistorys = await UOW.ContractPaymentHistoryRepository.List(ContractPaymentHistoryFilter);

                return(ContractPaymentHistorys);
            }
            catch (Exception ex)
            {
                if (ex.InnerException == null)
                {
                    await Logging.CreateSystemLog(ex, nameof(ContractPaymentHistoryService));

                    throw new MessageException(ex);
                }
                else
                {
                    await Logging.CreateSystemLog(ex.InnerException, nameof(ContractPaymentHistoryService));

                    throw new MessageException(ex.InnerException);
                }
            }
        }
コード例 #6
0
        private IQueryable <ContractPaymentHistoryDAO> OrFilter(IQueryable <ContractPaymentHistoryDAO> query, ContractPaymentHistoryFilter filter)
        {
            if (filter.OrFilter == null || filter.OrFilter.Count == 0)
            {
                return(query);
            }
            IQueryable <ContractPaymentHistoryDAO> initQuery = query.Where(q => false);

            foreach (ContractPaymentHistoryFilter ContractPaymentHistoryFilter in filter.OrFilter)
            {
                IQueryable <ContractPaymentHistoryDAO> queryable = query;
                if (ContractPaymentHistoryFilter.Id != null)
                {
                    queryable = queryable.Where(q => q.Id, ContractPaymentHistoryFilter.Id);
                }
                if (ContractPaymentHistoryFilter.ContractId != null)
                {
                    queryable = queryable.Where(q => q.ContractId, ContractPaymentHistoryFilter.ContractId);
                }
                if (ContractPaymentHistoryFilter.PaymentMilestone != null)
                {
                    queryable = queryable.Where(q => q.PaymentMilestone, ContractPaymentHistoryFilter.PaymentMilestone);
                }
                if (ContractPaymentHistoryFilter.PaymentPercentage != null)
                {
                    queryable = queryable.Where(q => q.PaymentPercentage, ContractPaymentHistoryFilter.PaymentPercentage);
                }
                if (ContractPaymentHistoryFilter.PaymentAmount != null)
                {
                    queryable = queryable.Where(q => q.PaymentAmount, ContractPaymentHistoryFilter.PaymentAmount);
                }
                if (ContractPaymentHistoryFilter.Description != null)
                {
                    queryable = queryable.Where(q => q.Description, ContractPaymentHistoryFilter.Description);
                }
                initQuery = initQuery.Union(queryable);
            }
            return(initQuery);
        }
コード例 #7
0
 private IQueryable <ContractPaymentHistoryDAO> DynamicFilter(IQueryable <ContractPaymentHistoryDAO> query, ContractPaymentHistoryFilter filter)
 {
     if (filter == null)
     {
         return(query.Where(q => false));
     }
     query = query.Where(q => !q.DeletedAt.HasValue);
     if (filter.CreatedAt != null)
     {
         query = query.Where(q => q.CreatedAt, filter.CreatedAt);
     }
     if (filter.UpdatedAt != null)
     {
         query = query.Where(q => q.UpdatedAt, filter.UpdatedAt);
     }
     if (filter.Id != null)
     {
         query = query.Where(q => q.Id, filter.Id);
     }
     if (filter.ContractId != null)
     {
         query = query.Where(q => q.ContractId, filter.ContractId);
     }
     if (filter.PaymentMilestone != null)
     {
         query = query.Where(q => q.PaymentMilestone, filter.PaymentMilestone);
     }
     if (filter.PaymentPercentage != null)
     {
         query = query.Where(q => q.PaymentPercentage, filter.PaymentPercentage);
     }
     if (filter.PaymentAmount != null)
     {
         query = query.Where(q => q.PaymentAmount, filter.PaymentAmount);
     }
     if (filter.Description != null)
     {
         query = query.Where(q => q.Description, filter.Description);
     }
     query = OrFilter(query, filter);
     return(query);
 }
コード例 #8
0
        private async Task <List <ContractPaymentHistory> > DynamicSelect(IQueryable <ContractPaymentHistoryDAO> query, ContractPaymentHistoryFilter filter)
        {
            List <ContractPaymentHistory> ContractPaymentHistories = await query.Select(q => new ContractPaymentHistory()
            {
                Id                = filter.Selects.Contains(ContractPaymentHistorySelect.Id) ? q.Id : default(long),
                ContractId        = filter.Selects.Contains(ContractPaymentHistorySelect.Contract) ? q.ContractId : default(long),
                PaymentMilestone  = filter.Selects.Contains(ContractPaymentHistorySelect.PaymentMilestone) ? q.PaymentMilestone : default(string),
                PaymentPercentage = filter.Selects.Contains(ContractPaymentHistorySelect.PaymentPercentage) ? q.PaymentPercentage : default(decimal?),
                PaymentAmount     = filter.Selects.Contains(ContractPaymentHistorySelect.PaymentAmount) ? q.PaymentAmount : default(decimal?),
                Description       = filter.Selects.Contains(ContractPaymentHistorySelect.Description) ? q.Description : default(string),
                IsPaid            = filter.Selects.Contains(ContractPaymentHistorySelect.IsPaid) ? q.IsPaid : default(bool),
                Contract          = filter.Selects.Contains(ContractPaymentHistorySelect.Contract) && q.Contract != null ? new Contract
                {
                    Id                = q.Contract.Id,
                    Code              = q.Contract.Code,
                    Name              = q.Contract.Name,
                    TotalValue        = q.Contract.TotalValue,
                    ValidityDate      = q.Contract.ValidityDate,
                    ExpirationDate    = q.Contract.ExpirationDate,
                    DeliveryUnit      = q.Contract.DeliveryUnit,
                    InvoiceAddress    = q.Contract.InvoiceAddress,
                    InvoiceZipCode    = q.Contract.InvoiceZipCode,
                    ReceiveAddress    = q.Contract.ReceiveAddress,
                    ReceiveZipCode    = q.Contract.ReceiveZipCode,
                    TermAndCondition  = q.Contract.TermAndCondition,
                    InvoiceNationId   = q.Contract.InvoiceNationId,
                    InvoiceProvinceId = q.Contract.InvoiceProvinceId,
                    InvoiceDistrictId = q.Contract.InvoiceDistrictId,
                    ReceiveNationId   = q.Contract.ReceiveNationId,
                    ReceiveProvinceId = q.Contract.ReceiveProvinceId,
                    ReceiveDistrictId = q.Contract.ReceiveDistrictId,
                    ContractTypeId    = q.Contract.ContractTypeId,
                    CompanyId         = q.Contract.CompanyId,
                    OpportunityId     = q.Contract.OpportunityId,
                    OrganizationId    = q.Contract.OrganizationId,
                    AppUserId         = q.Contract.AppUserId,
                    ContractStatusId  = q.Contract.ContractStatusId,
                    CreatorId         = q.Contract.CreatorId,
                    CustomerId        = q.Contract.CustomerId,
                    CurrencyId        = q.Contract.CurrencyId,
                } : null,
                CreatedAt = q.CreatedAt,
                UpdatedAt = q.UpdatedAt,
            }).ToListAsync();

            return(ContractPaymentHistories);
        }
コード例 #9
0
        private IQueryable <ContractPaymentHistoryDAO> DynamicOrder(IQueryable <ContractPaymentHistoryDAO> query, ContractPaymentHistoryFilter filter)
        {
            switch (filter.OrderType)
            {
            case OrderType.ASC:
                switch (filter.OrderBy)
                {
                case ContractPaymentHistoryOrder.Id:
                    query = query.OrderBy(q => q.Id);
                    break;

                case ContractPaymentHistoryOrder.Contract:
                    query = query.OrderBy(q => q.ContractId);
                    break;

                case ContractPaymentHistoryOrder.PaymentMilestone:
                    query = query.OrderBy(q => q.PaymentMilestone);
                    break;

                case ContractPaymentHistoryOrder.PaymentPercentage:
                    query = query.OrderBy(q => q.PaymentPercentage);
                    break;

                case ContractPaymentHistoryOrder.PaymentAmount:
                    query = query.OrderBy(q => q.PaymentAmount);
                    break;

                case ContractPaymentHistoryOrder.Description:
                    query = query.OrderBy(q => q.Description);
                    break;
                }
                break;

            case OrderType.DESC:
                switch (filter.OrderBy)
                {
                case ContractPaymentHistoryOrder.Id:
                    query = query.OrderByDescending(q => q.Id);
                    break;

                case ContractPaymentHistoryOrder.Contract:
                    query = query.OrderByDescending(q => q.ContractId);
                    break;

                case ContractPaymentHistoryOrder.PaymentMilestone:
                    query = query.OrderByDescending(q => q.PaymentMilestone);
                    break;

                case ContractPaymentHistoryOrder.PaymentPercentage:
                    query = query.OrderByDescending(q => q.PaymentPercentage);
                    break;

                case ContractPaymentHistoryOrder.PaymentAmount:
                    query = query.OrderByDescending(q => q.PaymentAmount);
                    break;

                case ContractPaymentHistoryOrder.Description:
                    query = query.OrderByDescending(q => q.Description);
                    break;
                }
                break;
            }
            query = query.Skip(filter.Skip).Take(filter.Take);
            return(query);
        }