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);
        }
示例#2
0
        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));