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}")); } }
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"); }