public async Task <IHttpActionResult> GetAllAsPagedList(InvoiceListRequestDto input)
        {
            //var result = await _invoiceAppService.GetAsPagedList(input);
            //return Ok(result);

            return(Ok());
        }
Esempio n. 2
0
        public async Task <PagedListResult <InvoiceDto> > GetAllInvoicesAsPagedList(InvoiceListRequestDto input)
        {
            Expression <Func <Eron.Core.Entities.Financial.Base.Invoice, bool> > filter = x => true;

            #region set Filters

            #region set invoiceNumber filter

            if (input.InvoiceNumber.IsPopulated())
            {
                filter = filter.AndAlso(invoice => invoice.InvoiceNumber.Contains(input.InvoiceNumber));
            }

            #endregion set invoiceNumber filter

            #region set time period filter

            if (input.DatePeriod.HasValue)
            {
                DateTime periodDateTime;
                switch (input.DatePeriod)
                {
                case DatePeriodType.Day:
                    periodDateTime = DateTime.Now.Date;
                    break;

                case DatePeriodType.Week:
                    var dayOfWeek = PersianDateTime.Now.PersianDayOfWeek;
                    periodDateTime = DateTime.Now.Date.AddDays(-(int)dayOfWeek);
                    break;

                case DatePeriodType.Month:
                    periodDateTime = new PersianDateTime(PersianDateTime.Now.Year, PersianDateTime.Now.Month, 1)
                                     .ToDateTime();
                    break;

                case DatePeriodType.Year:
                    periodDateTime = new PersianDateTime(PersianDateTime.Now.Year, 1, 1).ToDateTime();
                    break;

                case DatePeriodType.All:
                    periodDateTime = default(DateTime);
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(input.DatePeriod), input.DatePeriod, null);
                }

                if (periodDateTime != default(DateTime))
                {
                    filter = filter.AndAlso(x => x.CreateDateTime > periodDateTime);
                }
            }

            #endregion set time period filter

            #region set invoiceStatusType filter

            if (input.InvoiceStatus.HasValue)
            {
                filter = filter.AndAlso(x => x.InvoiceStatus == input.InvoiceStatus);
            }

            #endregion set invoiceStatusType filter

            #region set invoiceType filter

            if (input.Type.HasValue)
            {
                filter = filter.AndAlso(x => x.Type == input.Type);
            }

            #endregion

            #endregion

            #region set Order

            input.SetOrder("CreateDateTime", "desc");

            #endregion

            var result = await UnitOfWork.InvoiceRepository.GetAsPagedListAsync(input, filter,
                                                                                "InvoiceItems, InvoiceItems.ProductPrice, InvoiceItems.TariffPrice, User");

            foreach (var invoice in result.Result)
            {
                foreach (var item in invoice.InvoiceItems)
                {
                    if (item.ProductPrice != null)
                    {
                        invoice.Amount += item.ProductPrice.Price * item.Count;
                    }
                    else if (item.TariffPrice != null)
                    {
                        invoice.Amount += item.TariffPrice.Price * item.Count;
                    }
                    invoice.TotalCount += item.Count;
                }
            }

            return(result.MapTo <PagedListResult <InvoiceDto> >());
        }
Esempio n. 3
0
        public async Task <IHttpActionResult> AllInvoices(InvoiceListRequestDto input)
        {
            var result = await _invoiceAppService.GetAllInvoicesAsPagedList(input);

            return(Ok(result));
        }