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