[HttpPut("{id}")]  //api/vegetable/id
        public async Task <IActionResult> UpdateVegetable(int id, [FromBody] SaveEntreeComponentResource SaveEntreeComponentResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var isExistedVegetable = await _vegeRepository.GetVegetable(id);

            if (isExistedVegetable == null)
            {
                return(NotFound());
            }

            // Convert from View Model to Domain Model
            _mapper.Map <SaveEntreeComponentResource, Vegetable> (SaveEntreeComponentResource, isExistedVegetable);
            isExistedVegetable.LastUpdatedByOn = DateTime.Now;

            // Insert into database by using Domain Model
            await _uow.CompleteAsync();

            // Fetch complete object from database
            isExistedVegetable = await _vegeRepository.GetVegetable(isExistedVegetable.Id);

            // Convert from Domain Model to View Model
            var result = _mapper.Map <Vegetable, SaveEntreeComponentResource> (isExistedVegetable);

            // Return view Model
            return(Ok(result));
        }
        public async Task <IActionResult> CreateVegetable([FromBody] SaveEntreeComponentResource newVegetableResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            if (!await _userRepository.IsExistedUser(newVegetableResource.AddedByUserId))
            {
                ModelState.AddModelError("NonExistedUser", "User Not Found!");
                return(BadRequest(ModelState));
            }

            if (await _vegeRepository.IsDuplicateVegetable(newVegetableResource.keyValuePairInfo.Name))
            {
                ModelState.AddModelError("DuplicateVegetable", newVegetableResource.keyValuePairInfo.Name + " already existed!");
                return(BadRequest(ModelState));
            }

            // Convert from View Model to Domain Model
            var newVegetable = _mapper.Map <SaveEntreeComponentResource, Vegetable> (newVegetableResource);

            newVegetable.AddedOn = DateTime.Now;

            // Insert into database by using Domain Model
            _vegeRepository.AddVegetable(newVegetable);
            await _uow.CompleteAsync();

            newVegetable = await _vegeRepository.GetVegetable(newVegetable.Id);

            // Convert from Domain Model to View Model
            var result = _mapper.Map <Vegetable, SaveEntreeComponentResource> (newVegetable);

            // Return view Model
            return(Ok(result));
        }