예제 #1
0
        // GET: Company/Edit/5
        public async Task <IActionResult> Edit(long id)
        {
            var item = await _companyBusinessManager.GetCompany(id);

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

            var summary = await _companyBusinessManager.GetSummaryRanges(item.Id);

            ViewBag.Summary = summary;

            var exportSetting = await _companyBusinessManager.GetAllExportSettings(item.Id);

            ViewBag.ExportSettings = exportSetting;

            var creditUtilizedSettings = await _businessManager.GetCustomerCreditUtilizedSettingsList(item.Id);

            ViewBag.CreditUtilizedSettings = _mapper.Map <List <CustomerCreditUtilizedSettingsViewModel> >(creditUtilizedSettings);

            var model = _mapper.Map <CompanyViewModel>(item);

            return(View(model));
        }
예제 #2
0
        // GET: Invoice/Bulk
        public async Task <ActionResult> Bulk()
        {
            var companies = await _companyBusinessManager.GetCompanies();

            ViewBag.Companies = companies.Select(x => new SelectListItem()
            {
                Text = x.Name, Value = x.Id.ToString()
            }).ToList();

            var selectedCompany = companies.FirstOrDefault();

            var model = new CustomerFilterViewModel()
            {
                CompanyId = selectedCompany?.Id ?? 0,
                DateFrom  = DateTime.Now.FirstDayOfMonth(),
                DateTo    = DateTime.Now.LastDayOfMonth()
            };

            var summary = await _companyBusinessManager.GetSummaryRanges(selectedCompany?.Id ?? 0);

            ViewBag.SummaryRange = summary.Select(x => new SelectListItem()
            {
                Text = $"{x.From} - {x.To}", Value = x.Id.ToString()
            });

            var customerTags = await _businessManager.GetCustomerTags();

            ViewBag.Tags = customerTags.Select(x => new SelectListItem()
            {
                Text = x.Name, Value = x.Id.ToString()
            });

            var customerTypes = await _businessManager.GetCustomerTypes();

            ViewBag.CustomerTypes = customerTypes.Select(x => new SelectListItem()
            {
                Text = x.Name, Value = x.Id.ToString()
            });


            //var customers = await _businessManager.GetBulkCustomers(selectedCompany?.Id ?? 0, model.DateFrom, model.DateTo);
            //ViewBag.Customers = _mapper.Map<List<CustomerListViewModel>>(customers);

            return(View(model));
        }
예제 #3
0
        public async Task <List <CompanySummaryRangeDto> > GetRangeByCompanyId(long id)
        {
            var result = await _companyBusinessManager.GetSummaryRanges(id);

            return(_mapper.Map <List <CompanySummaryRangeDto> >(result));
        }
        public async Task <IActionResult> GenerateConstructor(InvoiceConstructorFilterViewModel model)
        {
            try {
                if (!ModelState.IsValid)
                {
                    throw new Exception("Form is not valid!");
                }
                var company = await _companyBusinessManager.GetCompany(model.CompanyId);

                var summary = await _companyBusinessManager.GetSummaryRanges(model.CompanyId);

                var constructorSearches = await _businessManager.GetInvoiceConstructorSearchCriterias(model.SearchCriterias.ToArray());

                var constructors = await _businessManager.GetConstructorInvoices(model.CompanyId, model.Date ?? DateTime.Now);

                foreach (var constructorSearch in constructorSearches)
                {
                    foreach (var summaryRange in summary)
                    {
                        var constructor = constructors.Where(x => x.SearchCriteriaId == constructorSearch.Id && x.SummaryRangeId == summaryRange.Id).FirstOrDefault();
                        if (constructor == null)
                        {
                            var entity = await _businessManager.CreateConstructorInvoice(new InvoiceConstructorDto()
                            {
                                CompanyId        = model.CompanyId,
                                Date             = model.Date.Value,
                                SearchCriteriaId = constructorSearch.Id,
                                SummaryRangeId   = summaryRange.Id
                            });

                            constructors.Add(entity);
                        }
                        else
                        {
                            //update
                        }
                    }
                }

                var customerCounts = new Dictionary <long, int>();
                foreach (var searchCriteria in constructorSearches)
                {
                    var constructor = new InvoiceConstructorDto()
                    {
                        CompanyId        = model.CompanyId,
                        Date             = model.Date ?? DateTime.Now,
                        SearchCriteriaId = searchCriteria.Id,
                    };

                    var customers = await _businessManager.GetCustomers(constructor);

                    if (!customerCounts.ContainsKey(searchCriteria.Id))
                    {
                        customerCounts.Add(searchCriteria.Id, customers.Count);
                    }
                }

                var viewDataDictionary = new ViewDataDictionary(new EmptyModelMetadataProvider(), new ModelStateDictionary())
                {
                    { "SummaryRanges", _mapper.Map <List <CompanySummaryRangeViewModel> >(summary) },
                    { "SearchCriterias", _mapper.Map <List <InvoiceConstructorSearchViewModel> >(constructorSearches) },
                    { "CompanyName", company.Name },
                    { "Constructors", _mapper.Map <List <InvoiceConstructorViewModel> >(constructors) },
                    { "CustomerCounts", customerCounts }
                };

                string html = _viewRenderService.RenderToStringAsync("_ConstructorPartial", model, viewDataDictionary).Result;
                return(Ok(html));
            } catch (Exception er) {
                return(BadRequest(er.Message ?? er.StackTrace));
            }
        }