/// <summary> /// Updates cartridge /// </summary> /// <param name="cartridgeId">Cartridge to update id</param> /// <param name="request">Update data request</param> /// <returns>True if successful</returns> public async Task <bool> UpdateCartridge(Guid cartridgeId, CartridgeUpdateRequest request) { var cartridgeDb = await CartridgeRepo .GetAll() .FirstOrDefaultAsync(c => c.Id == cartridgeId); if (cartridgeDb == null) { return(false); } Mapper.Map(request, cartridgeDb); await MakeCopiesAvaOrUnava(request.CopiesToMakeAva, true, cartridgeDb.Id); await MakeCopiesAvaOrUnava(request.CopiesToMakeUnava, false, cartridgeDb.Id); var copiesAmount = request.CopiesToAddAva + request.CopiesToAddUnava; var copies = new List <CartridgeCopy>(copiesAmount); for (int i = 0; i < copiesAmount; ++i) { copies.Add(new CartridgeCopy { CartridgeId = cartridgeDb.Id, Avaible = i < request.CopiesToAddAva }); } CartridgeCopyRepo.AddRange(copies); await CartridgeRepo.SaveChangesAsync(); CartridgeRepo.Update(cartridgeDb); await CartridgeRepo.SaveChangesAsync(); return(true); }