private void addButton_Click(object sender, EventArgs e)
        {
            if (SelectedOrNewColorDto == null)
            {
                MessageBox.Show(Messages.SELECTED_COLOR_REQUIRED, Constants.MESSAGE_CAPTION);
                return;
            }

            if (SelectedModelDto == null)
            {
                MessageBox.Show(Messages.SELECTED_MODEL_REQUIRED, Constants.MESSAGE_CAPTION);
                return;
            }

            if (SelectedSupplierDto == null)
            {
                MessageBox.Show(Messages.SELECTED_SUPPLIER_REQUIRED, Constants.MESSAGE_CAPTION);
                return;
            }

            var newDto = new StockRoomDto
            {
                ModelId       = SelectedModelDto.ModelId,
                SelectedColor = SelectedOrNewColorDto,
                Size          = Convert.ToDouble(sizeComboBox.SelectedItem),
                Quantity      = (int)quantityNumericUpDown.Value,
                EntryDate     = dateInTime.Value,
                SupplierId    = SelectedSupplierDto.SupplierId
            };

            ShoesDataClientServices.StockRoomServices.InsertNewProductInStock(newDto);
            ResetView();
            MessageBox.Show(Messages.NEW_PRODUCT_CREATED_SUCESSS, Constants.MESSAGE_CAPTION);
        }
        public void InsertNewProductInStock(StockRoomDto stockRoomDto)
        {
            Color shoesColor;

            if (stockRoomDto.SelectedColor.ColorId == null)
            {
                shoesColor = new Color {
                    Name = stockRoomDto.SelectedColor.Name
                };
                _shoesDataEntities.Colors.Add(shoesColor);
            }
            else
            {
                shoesColor = _colorServices.FindColor(stockRoomDto.SelectedColor.ColorId);
            }

            StockRoom newStockRoom;

            if (!stockRoomDto.SelectedColor.ColorId.HasValue ||
                !_productServices.ExistProduct(
                    stockRoomDto.ModelId,
                    stockRoomDto.SelectedColor.ColorId.Value,
                    stockRoomDto.Size))
            {
                newStockRoom = AddNewStockRoomAndProduct(stockRoomDto, shoesColor.Id);
            }
            else
            {
                newStockRoom = AddNewStockRoomUpdatingTotal(stockRoomDto);
            }
            SaveChanges();
        }
        private StockRoom AddNewStockRoomUpdatingTotal(StockRoomDto newStockRoomDto)
        {
            var currentProduct = _productServices.FindProduct(
                newStockRoomDto.ModelId,
                newStockRoomDto.SelectedColor.ColorId,
                newStockRoomDto.Size);

            var lastStockRoom = GetLastStockRoomByProductId(currentProduct.Id);
            var stocks        = newStockRoomDto.Quantity;

            if (lastStockRoom != null)
            {
                stocks += lastStockRoom.StockValue;
            }

            var newStockRoom = new StockRoom
            {
                ProductId     = currentProduct.Id,
                StockValue    = stocks,
                EntryValue    = newStockRoomDto.Quantity,
                EntryDate     = newStockRoomDto.EntryDate,
                OperationType = OperationType.IN.ToString(),
                SupplierId    = newStockRoomDto.SupplierId
            };

            _shoesDataEntities.StockRooms.Add(newStockRoom);
            return(newStockRoom);
        }
        private StockRoom AddNewStockRoomAndProduct(StockRoomDto newStockRoomDto, int colorId)
        {
            var currentProduct = new Product
            {
                ModelId = newStockRoomDto.ModelId,
                ColorId = colorId,
                Size    = newStockRoomDto.Size,
            };

            _shoesDataEntities.Products.Add(currentProduct);
            var newStockRoom = new StockRoom
            {
                ProductId     = currentProduct.Id,
                StockValue    = newStockRoomDto.Quantity,
                EntryValue    = newStockRoomDto.Quantity,
                EntryDate     = newStockRoomDto.EntryDate,
                OperationType = OperationType.IN.ToString(),
                SupplierId    = newStockRoomDto.SupplierId
            };

            _shoesDataEntities.StockRooms.Add(newStockRoom);
            return(newStockRoom);
        }