private void addButton_Click(object sender, EventArgs e)
        {
            if (SelectedColorDto == null ||
                SelectedModelDto == null ||
                SelectedStoreDto == null ||
                ShoesSize == null)
            {
                MessageBox.Show(Messages.STORE_SUPPIER_VALUES_REQUIRED, Constants.MESSAGE_CAPTION);
                return;
            }

            var newDto = new StoreStockRoomDto()
            {
                ModelId        = SelectedModelDto.ModelId,
                ColorId        = SelectedColorDto.ColorId,
                Size           = ShoesSize,
                Quantity       = (int)quantityNumericUpDown.Value,
                DateOfSupplier = dateInTime.Value,
                StoreId        = SelectedStoreDto.StoreId
            };

            ShoesDataClientServices.StoreStockRoomServices.SupplyStoreStockRoom(newDto);
            var max = quantityNumericUpDown.Maximum;

            max -= newDto.Quantity;
            quantityNumericUpDown.Maximum = max;
            quantityNumericUpDown.Value   = max;
            ResetView();
            MessageBox.Show(Messages.NEW_PRODUCT_CREATED_SUCESSS, Constants.MESSAGE_CAPTION);
        }
        public void SupplyStoreStockRoom(StoreStockRoomDto storeStockRoomDto)
        {
            if (storeStockRoomDto.ColorId == null)
            {
                throw new InvalidOperationException("Error: No enter new Store StockRoom if Color is null");
            }
            if (storeStockRoomDto.Size == null)
            {
                throw new InvalidOperationException("Error: No enter new Store StockRoom if Shoes Size is null");
            }

            var modelId        = storeStockRoomDto.ModelId;
            var colorId        = storeStockRoomDto.ColorId.Value;
            var size           = storeStockRoomDto.Size.Value;
            var currentProduct = _productServices.FindProduct(modelId, colorId, size);

            if (currentProduct == null)
            {
                throw new StockRoomOperationException("No Found a product item to supply Store StockRoom");
            }

            var lastStockRoom = _stockRoomDataServices.GetLastStockRoomByProductId(currentProduct.Id);

            if (lastStockRoom == null)
            {
                throw new StockRoomOperationException("No Found any stock room to execute the operation");
            }
            if (lastStockRoom.StockValue < storeStockRoomDto.Quantity)
            {
                throw new StockRoomOperationException(
                          "It is not possible to move requested quantity to selected store");
            }

            var newStockRoom = new StockRoom()
            {
                ProductId     = lastStockRoom.ProductId,
                StockValue    = lastStockRoom.StockValue - storeStockRoomDto.Quantity,
                EntryDate     = storeStockRoomDto.DateOfSupplier,
                EntryValue    = -storeStockRoomDto.Quantity,
                StoreId       = storeStockRoomDto.StoreId,
                OperationType = OperationType.OUT.ToString()
            };

            _shoesDataEntities.StockRooms.Add(newStockRoom);
            var lastStoreStockRoom = GetLastStoreStockRoomByProductId(storeStockRoomDto.StoreId, currentProduct.Id);
            var storeStocks        = storeStockRoomDto.Quantity;

            if (lastStoreStockRoom != null)
            {
                storeStocks += lastStoreStockRoom.StockValue;
            }
            var newStoreStockRoom = new StoreStockRoom
            {
                ProductId     = currentProduct.Id,
                StockValue    = storeStocks,
                EntryDate     = storeStockRoomDto.DateOfSupplier,
                EntryValue    = storeStockRoomDto.Quantity,
                StoreId       = storeStockRoomDto.StoreId,
                OperationType = OperationType.IN.ToString()
            };

            _shoesDataEntities.StoreStockRooms.Add(newStoreStockRoom);
            SaveChanges();
        }