public async Task <HttpResponseMessage> GenerateInvoiceAsync(int suscriberId)
        {
            try
            {
                var chosenSubscriber = await _subscriberService.GetSubscriberAsync(suscriberId);

                var reportsBl = new List <PhoneReportBl>();
                chosenSubscriber.Phones.ForEach(p => reportsBl.Add(_reportService.GenerateReport(p)));

                var newInvoice = _invoiceDataCapture.Capture(chosenSubscriber, reportsBl);

                var invoiceToReturn = await _invoiceService.AddAsync(newInvoice, suscriberId);

                await _phoneService.UpdateBundlesAsync(suscriberId);

                var serializerFormat      = "json";
                var chosenSubscriberEmail = await _subscriberService.GetSubscribersEmailAsync(suscriberId);

                var _fileSerializer = _serializerProvider.SerializerChanger(serializerFormat);
                var path            = _serializerProvider.GetCurrentDirectory(serializerFormat, invoiceToReturn);

                await _fileSerializer.SaveToFileAsync(path, invoiceToReturn);

                await _messageSender.SendAsync(chosenSubscriberEmail, path, invoiceToReturn);

                _invoiceService.RemoveInvoiceFile(path);

                return(Request.CreateResponse(HttpStatusCode.OK, invoiceToReturn));
            }
            catch (Exception e)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, $"Generating new invoice failed. {e.Message}"));
            }
        }
Пример #2
0
        private void ExportInvoice()
        {
            string    numberOFInvoiceFromUser;
            InvoiceBl chosenInvoice;

            _ioHelper.ClearConsole();

            _ioHelper.PrintMessage("Choose subscriber whose invoice you want to export: ");
            _detailsDisplay.ShowAllSubscribers();
            var indexOfSubscriberFromUser = _ioHelper.GetIntFromUser();

            _ioHelper.ClearConsole();
            _ioHelper.PrintMessage("Choose invoice form given below: ");

            try
            {
                _detailsDisplay.ShowAllInvoices(indexOfSubscriberFromUser);
                numberOFInvoiceFromUser = _ioHelper.GetStringFromUser("");
                chosenInvoice           = _combiningUserOfferService.GetInvoice(numberOFInvoiceFromUser);
            }
            catch (Exception e)
            {
                _ioHelper.PrintMessageWithConsoleRead($"{e.Message} {Environment.NewLine}press any key to go back to main menu");
                return;
            }

            _ioHelper.ClearConsole();
            var serializer      = _ioHelper.GetStringFromUser("Choose export format (xml/json): ");
            var _fileSerializer = _serializerProvider.SerializerChanger(serializer);

            if (_fileSerializer == null)
            {
                _ioHelper.PrintMessageWithConsoleRead("To get back to menu press any key");
                return;
            }

            _fileSerializer.SaveToFileAsync(_systemDataCaptureService.GetFilePath(serializer, chosenInvoice), chosenInvoice).Wait();
            _ioHelper.PrintMessageWithConsoleRead("Exporting invoice succeeded");
        }