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}"));
            }
        }
 public InvoiceBl CaptureInvoice(SubscriberBl subscriber, List <PhoneReportBl> reportsBl)
 {
     return(_invoiceDataCapture.Capture(subscriber, reportsBl));
 }