Esempio n. 1
0
 public static Domain.Inventory Map(Data.Models.Inventory deInv) => new Domain.Inventory
 {
     invId        = deInv.Invid,
     cost_inv     = deInv.Cost,
     FkIngredient = deInv.FkIngredient,
     resfId       = deInv.Resfid,
     stock        = deInv.Stock
 };
Esempio n. 2
0
        public ServiceResponse <Data.Models.Product> CreateProduct(Data.Models.Product product)
        {
            try
            {
                _db.Products.Add(product);

                var newInventory = new Data.Models.Inventory
                {
                    Product           = product,
                    AvailableQuantity = 0,
                    SupposedQuantity  = 10
                };

                _db.ProductInventories.Add(newInventory);

                _db.SaveChanges();

                return(new ServiceResponse <Data.Models.Product>
                {
                    Data = product,
                    Time = DateTime.UtcNow,
                    Message = "Saved new product",
                    IsSuccess = true
                });
            }

            catch (Exception e)
            {
                return(new ServiceResponse <Data.Models.Product>
                {
                    Data = product,
                    Time = DateTime.UtcNow,
                    Message = e.StackTrace,
                    IsSuccess = false
                });
            }
        }
        public async Task<bool> Handle(UpdateAlbumCommand request, CancellationToken cancellationToken)
        {
            if (request.AlbumId <= 0
                || string.IsNullOrEmpty(request.AlbumName)
                || request.Stock < 0
                || request.Type <= 0
                || request.Artist == null || string.IsNullOrEmpty(request.Artist.Name))
            {
                _logger.Information("Requesting to update album with invalid request {@request}, returning false.", request);
                return false;
            }

            try
            {
                _logger.Information("Request to update album {@Request}", request);
                using (var context = AlbumsDbContext.Create())
                {
                    using (var transaction = context.Database.BeginTransaction())
                    {

                        var album = context.Albums.SingleOrDefault(a => a.Id == request.AlbumId);

                        if (album != null)
                        {
                            var typeid = context.AlbumTypes.SingleOrDefault(t => t.Id == request.Type);

                            album.AlbumName = request.AlbumName;
                            album.TypeId = typeid.Id;

                            var artist = context.Artists.FirstOrDefault(a => a.Name.Replace(" ", "").Equals(request.Artist.Name.Replace(" ", ""), StringComparison.InvariantCultureIgnoreCase));

                            if (artist == null)
                            {
                                artist = new Artist
                                {
                                    Name = request.Artist.Name
                                };
                                context.Artists.Add(artist);
                                await context.SaveChangesAsync();
                            }

                            var albumArtist = context.AlbumArtists.FirstOrDefault(ar => ar.AlbumId == request.AlbumId);

                            if (albumArtist == null)
                            {
                                var ar = new AlbumArtists
                                {
                                    AlbumId = album.Id,
                                    ArtistId = artist.Id
                                };
                                context.AlbumArtists.Add(ar);
                                await context.SaveChangesAsync();
                            }
                            else {
                                albumArtist.ArtistId = artist.Id;
                                await context.SaveChangesAsync();
                            }

                            var inventory = context.Inventory.SingleOrDefault(i => i.SKU.Equals(album.SKU, StringComparison.InvariantCultureIgnoreCase));

                            if (inventory == null)
                            {
                                // insert inventory record
                                inventory = new Data.Models.Inventory
                                {
                                    SKU = album.SKU,
                                    Stock = request.Stock
                                };
                                context.Inventory.Add(inventory);
                            }
                            else
                            {
                                // update inventory record
                                inventory.Stock = request.Stock;
                            }

                            await context.SaveChangesAsync();

                        }

                        transaction.Commit();
                    }
                }
                _logger.Information("Album was updated succesfully");
                return true;
            }
            catch (Exception ex)
            {
                _logger.Error(ex, "Errored while updating album with message {message}", ex.Message);
                return false;
            }
        }