public async Task <IActionResult> GenerateFromDraftAsync([FromBody] UpdateInvoiceModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ErrorResponse.Create("Invalid model.", ModelState)));
            }

            IInvoice invoice;

            try
            {
                invoice = await _invoiceService.GenerateFromDraftAsync(Mapper.Map <Invoice>(model));
            }
            catch (InvoiceNotFoundException exception)
            {
                await _log.WriteErrorAsync(nameof(InvoiceController), nameof(GenerateFromDraftAsync),
                                           model.ToContext(), exception);

                return(NotFound(ErrorResponse.Create(exception.Message)));
            }
            catch (InvalidOperationException exception)
            {
                await _log.WriteErrorAsync(nameof(InvoiceController), nameof(GenerateFromDraftAsync),
                                           model.ToContext(), exception);

                return(BadRequest(ErrorResponse.Create(exception.Message)));
            }

            return(Ok(Mapper.Map <InvoiceModel>(invoice)));
        }
Example #2
0
        public async Task <bool> UpdateStatusList(UpdateInvoiceModel model)
        {
            var response = await flurlClient.Request($"/v1/outboxinvoice/updatestatuslist")
                           .PutJsonAsync(model);

            return(response.IsSuccessStatusCode);
        }
Example #3
0
        public async Task <bool> SendOrRemoveArchive(UpdateInvoiceModel model)
        {
            var response = await flurlClient.Request($"/v1/inboxinvoice/sendorremovearchivelist")
                           .PutJsonAsync(model);

            return(response.IsSuccessStatusCode);
        }
        public static UpdateInvoiceModel Sanitize(this UpdateInvoiceModel model)
        {
            model.ClientEmail = model.ClientEmail.SanitizeEmail();
            model.ClientName  = model.ClientName.Sanitize();

            return(model);
        }
        public async Task <IActionResult> UpdateAsync([FromBody] UpdateInvoiceModel model)
        {
            try
            {
                model.ValidateDueDate();

                var invoice = Mapper.Map <Invoice>(model);

                await _invoiceService.UpdateDraftAsync(invoice);

                return(NoContent());
            }
            catch (InvoiceDueDateException ex)
            {
                _log.WarningWithDetails(ex.Message, model.Sanitize());

                return(BadRequest(ErrorResponse.Create(ex.Message)));
            }
            catch (InvoiceNotFoundException ex)
            {
                _log.WarningWithDetails(ex.Message, model.Sanitize());

                return(NotFound(ErrorResponse.Create("Invoice with such Id and MerchantId not found")));
            }
            catch (InvalidOperationException ex)
            {
                _log.WarningWithDetails(ex.Message, model.Sanitize());

                return(BadRequest(ErrorResponse.Create(ex.Message)));
            }
        }
Example #6
0
        public static string ToContext(this UpdateInvoiceModel model)
        {
            var context = Mapper.Map <UpdateInvoiceModel>(model);

            context.ClientEmail = context.ClientEmail.SanitizeEmail();

            return(context.ToJson());
        }
        public static UpdateInvoiceModel Sanitize(this UpdateInvoiceModel model)
        {
            var context = Mapper.Map <UpdateInvoiceModel>(model);

            context.ClientEmail = context.ClientEmail?.SanitizeEmail();
            context.ClientName  = context.ClientName?.Sanitize();

            return(context);
        }
        public Task <Result <InvoiceCoreModel> > Edit(UpdateInvoiceModel model)
        => Result <InvoiceCoreModel> .TryAsync(async() =>
        {
            var invoice = (await _repository.FirstOrDefaultAsync <Invoice>(i => i.Id == model.Id, i => i.UserSurvey))
                          .Data;
            if (invoice == null)
            {
                return(Result <InvoiceCoreModel> .Failed(Error.WithData(1000, new[] { "invoice not found " })));
            }

            var profile =
                await _membershipServiceApi.AuthAuthApiService.Profile(new BaseModel {
                Id = invoice.UserId
            });

            if (model.Status != (InvoiceStatus)invoice.Status && model.Status == InvoiceStatus.Pending &&
                model.Enabled)
            {
                _coreSmtpClient.SendInvoiceReady(profile.Data.Email, profile.Data.Firstname + " " + profile.Data.Lastname);
            }

            invoice.Amount      = model.Amount + model.Amount * 5 / 100;
            invoice.TaxAmount   = model.Amount * 5 / 100;
            invoice.Title       = model.Title;
            invoice.Description = model.Description;
            invoice.Amount      = model.Amount;
            if (model.Status == InvoiceStatus.Paid)
            {
                invoice.IsPaid = true;

                if (invoice.UserSurvey.Any())
                {
                    _coreSmtpClient.SendPaysForInvoicesNotif("*****@*****.**",
                                                             profile.Data.Username,
                                                             DateTime.Now.ToString("F"));
                }
            }

            invoice.Status  = (byte)model.Status;
            invoice.Enabled = model.Enabled;

            await _repository.CommitAsync();
            return(Result <InvoiceCoreModel> .Successful(_autoMapper.Map <InvoiceCoreModel>(invoice)));
        });
        public async Task UpdateAsync(UpdateInvoiceModel model, bool draft)
        {
            model.PaymentAssetId = _lykkeAssetsResolver.GetInvoiceCreationPair(model.SettlementAssetId);

            try
            {
                await _payInvoiceClient.UpdateDraftInvoiceAsync(model);

                if (!draft)
                {
                    await _payInvoiceClient.CreateInvoiceAsync(model.Id);
                }
            }
            catch (ErrorResponseException ex)
            {
                _log.ErrorWithDetails(ex, new { model = model.Sanitize(), draft });

                throw new InvalidOperationException(ex.Message);
            }
        }
 public async Task <InvoiceModel> GenerateInvoiceFromDraftAsync(UpdateInvoiceModel model)
 {
     return(await _runner.RunAsync(() => _invoiceApi.GenerateFromDraftAsync(model)));
 }
 public async Task <Result <InvoiceCoreModel> > Edit(UpdateInvoiceModel model)
 => await _invoiceBiz.Edit(model);
 public async Task UpdateDraftInvoiceAsync(UpdateInvoiceModel model)
 {
     await _runner.RunAsync(() => _draftsApi.UpdateAsync(model));
 }