public async Task <IActionResult> View(long id)
        {
            var constructor = await _businessManager.GetConstructorInvoice(id);

            var summaryRange = await _companyBusinessManager.GetSummaryRange(constructor.SummaryRangeId);

            ViewBag.SummaryRange = $"{summaryRange.From} - {summaryRange.To}";

            var searchCriteria = await _businessManager.GetInvoiceConstructorSearchCriteria(constructor.SearchCriteriaId);

            ViewBag.SearchCriteria = _mapper.Map <InvoiceConstructorSearchViewModel>(searchCriteria);

            if (searchCriteria.Group == CustomerGroupType.OnlyNew)
            {
                ViewBag.CreatedDate = $"{constructor.Date.FirstDayOfMonth().ToString("MM/dd/yyyy")} - {constructor.Date.LastDayOfMonth().ToString("MM/dd/yyyy")}";
            }
            else if (searchCriteria.Group == CustomerGroupType.ExcludeNew)
            {
                ViewBag.CreatedDate = $"None - {constructor.Date.AddMonths(-1).LastDayOfMonth().ToString("MM/dd/yyyy")}";
            }
            else if (searchCriteria.Group == CustomerGroupType.All)
            {
                ViewBag.CreatedDate = $"None - {constructor.Date.LastDayOfMonth().ToString("MM/dd/yyyy")}";
            }

            var tags = await _businessManager.GetCustomerTags();

            ViewBag.Tags = string.Join(',', tags.Where(x => searchCriteria.TagsIds.Contains(x.Id)).Select(x => x.Name));

            var types = await _businessManager.GetCustomerTypes();

            ViewBag.Types = string.Join(',', types.Where(x => searchCriteria.TypeIds.Contains(x.Id)).Select(x => x.Name));

            var constructors = await _businessManager.GetConstructorInvoices(constructor.CompanyId, constructor.Date);

            constructors = constructors.Where(x => x.SearchCriteriaId == constructor.SearchCriteriaId).ToList();

            var invoices = await _businessManager.GetInvoiceDraft(constructors.Select(x => x.Id).ToArray());

            ViewBag.Invoices = invoices.Count();

            var customers = await _businessManager.GetCustomers(constructor);

            ViewBag.Customers = customers.Count();

            var model = _mapper.Map <InvoiceConstructorViewModel>(constructor);

            if (IsAjaxRequest)
            {
                return(PartialView(model));
            }
            else
            {
                return(View(model));
            }
        }
Пример #2
0
        public async Task <IActionResult> EditSummary(long id)
        {
            var item = await _companyBusinessManager.GetSummaryRange(id);

            if (item == null)
            {
                return(NotFound());
            }
            var company = await _companyBusinessManager.GetCompany(item.CompanyId);

            if (company == null)
            {
                return(NotFound());
            }

            ViewBag.CompanyName = company.Name;

            return(View(_mapper.Map <CompanySummaryRangeViewModel>(item)));
        }
Пример #3
0
        public async Task <IActionResult> GenerateBulkInvoices(InvoiceBulkViewModel model)
        {
            try {
                if (ModelState.IsValid)
                {
                    var customers = await _businessManager.GetCustomers(model.Customers.ToArray());

                    var subtotalRange = await _companyBusinessManager.GetSummaryRange(model.SummaryRangeId ?? 0);

                    if (subtotalRange != null)
                    {
                        model.Header = $"{subtotalRange.From}-{subtotalRange.To}";
                        List <InvoiceViewModel> invoices = new List <InvoiceViewModel>();
                        Random random = new Random();

                        foreach (var customer in customers)
                        {
                            var date    = random.NextDate(model.DateFrom, model.DateTo);
                            var invoice = new InvoiceViewModel()
                            {
                                CompanyId  = model.CompanyId,
                                CustomerId = customer.Id,
                                Customer   = _mapper.Map <CustomerViewModel>(customer),
                                Date       = date,
                                DueDate    = date.AddDays(30),
                                No         = $"{date.ToString("mmyy")}_{random.Next(100000, 999999)}",
                                Subtotal   = random.NextDecimal(subtotalRange.From, subtotalRange.To)
                            };
                            invoices.Add(invoice);
                        }
                        model.Invoices = invoices;

                        string html = await _viewRenderService.RenderToStringAsync("_BulkInvoicePartial", model);

                        return(Ok(html));
                    }
                    else
                    {
                        return(BadRequest());
                    }
                }
            } catch (Exception er) {
                Console.WriteLine(er.Message);
            }
            return(Ok(model));
        }