Exemplo n.º 1
0
        public async Task UpdateInvoice(string invoiceId, InvoiceAddEditDTO invoiceDto, string actorId)
        {
            if (string.IsNullOrWhiteSpace(invoiceId))
            {
                throw new ArgumentException(nameof(invoiceId));
            }

            if (invoiceDto == null)
            {
                throw new ArgumentNullException(nameof(invoiceDto));
            }

            Invoice invoice = await this.invoiceRepo.GetById(invoiceId);

            if (invoice == null)
            {
                throw new InvalidOperationException($"Invoice with id='{invoice.Id}' doesn't exist.");
            }

            Invoice updatedInvoice = this.mapper.Map <Invoice>(invoiceDto);
            IReadOnlyCollection <AuditLogUpdate> invoiceChanges = this.changeDetector.DetectChanges(invoice, updatedInvoice);

            if (invoiceChanges.Count > 0)
            {
                updatedInvoice.Id            = invoice.Id;
                updatedInvoice.LastUpdateLog = AuditLog.Create(actorId, invoiceChanges);

                await this.invoiceRepo.Update(updatedInvoice);
            }
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Post(
            [FromBody] InvoiceAddEditDTO invoiceDto,
            [FromHeader(Name = CustomRequestHeaders.Actor)][Required] string actorId)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            string invoiceId = await this.invoiceService.CreateInvoice(invoiceDto, actorId);

            return(this.Created(this.Url.Link(InvoiceActionNames.GetById, new { id = invoiceId }), invoiceId));
        }
Exemplo n.º 3
0
        public async Task <IActionResult> Put(
            string id,
            [FromBody] InvoiceAddEditDTO invoiceDto,
            [FromHeader(Name = CustomRequestHeaders.Actor)][Required] string actorId)
        {
            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            await this.invoiceService.UpdateInvoice(id, invoiceDto, actorId);

            return(this.Ok());
        }
Exemplo n.º 4
0
        public async Task <string> CreateInvoice(InvoiceAddEditDTO invoiceDto, string actorId)
        {
            if (invoiceDto == null)
            {
                throw new ArgumentNullException(nameof(invoiceDto));
            }

            Invoice invoice = this.mapper.Map <Invoice>(invoiceDto);

            invoice.CreateLog = AuditLog.Create(actorId);

            await this.invoiceRepo.Create(invoice);

            return(invoice.Id);
        }