Ejemplo n.º 1
0
        public SearchModel SearchDrafts(SearchModel.DraftKind kind, Guid?customerId, DateTime?dateFrom, DateTime?dateTo, int page, int size)
        {
            var model = new SearchModel();

            var drafts = new List <SearchModel.Draft>();

            if (kind == SearchModel.DraftKind.Any || kind == SearchModel.DraftKind.OutgoingInvoice)
            {
                var outgoingInvoiceDrafts = Database.OutgoingInvoiceDrafts;
                if (customerId.HasValue)
                {
                    outgoingInvoiceDrafts = outgoingInvoiceDrafts.Where(d => d.Customer.OriginalId == customerId.Value);
                }
                if (dateFrom.HasValue)
                {
                    outgoingInvoiceDrafts = outgoingInvoiceDrafts.Where(i => i.Date >= dateFrom.Value);
                }
                if (dateTo.HasValue)
                {
                    outgoingInvoiceDrafts = outgoingInvoiceDrafts.Where(i => i.Date <= dateTo.Value);
                }

                drafts.AddRange(outgoingInvoiceDrafts.Select(d => new SearchModel.Draft
                {
                    Id           = d.Id,
                    Currency     = d.Currency,
                    CustomerName = d.Customer.Name,
                    Date         = d.Date,
                    DocumentType = "outgoingInvoice",
                    TotalPrice   = d.TotalPrice
                }));
            }

            if (kind == SearchModel.DraftKind.Any || kind == SearchModel.DraftKind.OutgoingCreditNote)
            {
                var outgoingCreditNoteDrafts = Database.OutgoingCreditNoteDrafts;
                if (customerId.HasValue)
                {
                    outgoingCreditNoteDrafts = outgoingCreditNoteDrafts.Where(d => d.Customer.OriginalId == customerId.Value);
                }
                if (dateFrom.HasValue)
                {
                    outgoingCreditNoteDrafts = outgoingCreditNoteDrafts.Where(i => i.Date >= dateFrom.Value);
                }
                if (dateTo.HasValue)
                {
                    outgoingCreditNoteDrafts = outgoingCreditNoteDrafts.Where(i => i.Date <= dateTo.Value);
                }

                drafts.AddRange(outgoingCreditNoteDrafts.Select(d => new SearchModel.Draft
                {
                    Id           = d.Id,
                    Currency     = d.Currency,
                    CustomerName = d.Customer.Name,
                    Date         = d.Date,
                    DocumentType = "outgoingCreditNote",
                    TotalPrice   = -d.TotalPrice
                }));
            }

            model.TotalNumberOfDrafts = drafts.Count();

            int skip = (page - 1) * size;

            model.Drafts = drafts
                           .OrderByDescending(d => d.Date)
                           .Skip(skip)
                           .Take(size)
                           .ToArray();

            return(model);
        }
Ejemplo n.º 2
0
        public IActionResult Search(SearchModel.DraftKind kind, Guid?customerId, DateTime?dateFrom, DateTime?dateTo, int page = 1, int size = 20)
        {
            var model = WorkerServices.SearchDrafts(kind, customerId, dateFrom, dateTo, page, size);

            return(Ok(model));
        }