public async Task <bool> CanUpdateInvoice(ClaimsPrincipal claims, int id, InvoiceUpdateDto invoiceUpdateDto) { var businessId = await businessAuthorize.GetBusinessId(claims); // Tarkista että laskun omistaa oikea käyttäjä if (!await invoiceStore.OwnedByBusiness(businessId, id)) { return(false); } // Tarkista että olemassaolevien laskurivien ID:t kuuluvat laskulle if (!await invoiceStore.InvoiceRowsBelongToInvoice(id, invoiceUpdateDto.InvoiceRows .Where(t => t.Id != null) .Select(t => t.Id) .Cast <int>())) { return(false); } // Tarkista että asiakkaan ID on yrityksen asiakkaan ID if (invoiceUpdateDto.ClientId != null && !await clientsAuthorize.CanReadClient(claims, (int)invoiceUpdateDto.ClientId)) { return(false); } return(true); }
public InvoiceDto Update(int id, InvoiceUpdateDto item) { if (item == null) { throw new ArgumentNullException(nameof(item)); } var invoice = base.FindInner <Invoice>(x => x.Id == id && !x.IsDeleted)?.Include(x => x.InvoiceItems).SingleOrDefault(); ExceptionHelpers.ThrowNotFoundIfNull(invoice, nameof(invoice), id); invoice = Mapper.Map(item, invoice); base.Update(invoice); SaveChanges(); return(GetSingle(id)); }
public async Task <InvoiceDto> Update( int id, [FromBody] InvoiceUpdateDto updateInvoiceDto, [RequestBusiness] Business business) { if (!await invoiceAuthorize.CanUpdateInvoice(User, id, updateInvoiceDto)) { throw new Forbidden(); } var invoice = await invoiceService.GetByBusiness(business.Id, id); // Päivitä laskua dtosta updateInvoiceDto.UpdateInvoice(invoice); await invoiceService.Update(invoice); // Palauta päivitetty lasku, kierretään tietokannan kautta jotta // data päivittyy oikein return(InvoiceDto.FromInvoice( await invoiceService.GetByBusiness(business.Id, id) )); }
public async Task <InvoiceDto> Update( int id, [FromBody] InvoiceUpdateDto updateInvoiceDto) { // Tässä esimerkissä businessId on vakio, seuraavassa esimerkissä se // haetaan käyttäjän tiedoista var businessId = 1; var invoice = await invoiceService.GetByBusiness(businessId, id); // Tästä puuttuu oikeustarkistus että client Id on tämän yrityksen // asiakkaan ID. Sekä tarkistus että laskurivien ID:t eivät vaihdu // laskulta toiselle. Oikeustarkistukset tehdään seuraavassa // esimerkissä // Päivitä laskua dtosta updateInvoiceDto.UpdateInvoice(invoice); await invoiceService.Update(invoice); // Palauta päivitetty lasku, kierretään tietokannan kautta jotta // data päivittyy oikein return(InvoiceDto.FromInvoice( await invoiceService.GetByBusiness(businessId, id) )); }
public IActionResult UpdateInvoice(int id, [FromBody] InvoiceUpdateDto invoiceUpdateDto) => Ok(invoiceRepository.Update(id, invoiceUpdateDto));