public async Task <IActionResult> CreateEntree([FromBody] SaveEntreeResource newEntreeResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

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

            if (await _entreeRepository.IsDuplicateEntree(newEntreeResource.Name))
            {
                ModelState.AddModelError("DuplicateEntree", newEntreeResource.Name + " already existed!");
                return(BadRequest(ModelState));
            }

            // Convert from View Model to Domain Model
            var newEntree = _mapper.Map <SaveEntreeResource, Entree>(newEntreeResource);

            newEntree.AddedOn = DateTime.Now;
            if (newEntree.StapleFoodId == 0)
            {
                newEntree.StapleFoodId = null;
            }

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

            newEntree = await _entreeRepository.GetEntree(newEntree.Id);

            // Convert from Domain Model to View Model
            var result = _mapper.Map <Entree, SaveEntreeResource>(newEntree);

            // Return view Model
            return(Ok(result));
        }
        [HttpPut("{id}")] //api/entree/id
        public async Task <IActionResult> UpdateEntree(int id, [FromBody] SaveEntreeResource SaveEntreeResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var existedEntreeFromDB = await _entreeRepository.GetEntree(id);

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

            if (await _entreeRepository.IsDuplicateEntree(SaveEntreeResource.Name, SaveEntreeResource.Id))
            {
                ModelState.AddModelError("DuplicateEntree", SaveEntreeResource.Name + " already existed!");
                return(BadRequest(ModelState));
            }

            // Convert from View Model to Domain Model
            _mapper.Map <SaveEntreeResource, Entree>(SaveEntreeResource, existedEntreeFromDB);
            existedEntreeFromDB.LastUpdatedByOn = DateTime.Now;

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

            // Fetch complete object from database
            existedEntreeFromDB = await _entreeRepository.GetEntree(existedEntreeFromDB.Id);

            // Convert from Domain Model to View Model
            var result = _mapper.Map <Entree, SaveEntreeResource>(existedEntreeFromDB);

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