public IActionResult PartiallyUpdateClient(int id, [FromBody] JsonPatchDocument <ClientForManipulation> patchDoc)
        {
            var clientFromRepo = _repo.GetClient(id);

            if (clientFromRepo == null)
            {
                var newClient = new ClientForManipulation();
                patchDoc.ApplyTo(newClient);
                if (!TryValidateModel(newClient))
                {
                    return(BadRequest(ModelState));
                }
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                var resultAction = AddClient(newClient);
                return(resultAction);
            }
            var clientDto = _mapper.Map <ClientForManipulation>(clientFromRepo);

            patchDoc.ApplyTo(clientDto);
            _mapper.Map(clientDto, clientFromRepo);
            _repo.UpdateClient(clientFromRepo);
            _repo.Save();
            return(NoContent());
        }
        public IActionResult AddClient(ClientForManipulation client)
        {
            var clientEntity = _mapper.Map <Client>(client);

            _repo.AddClient(clientEntity);
            _repo.Save();
            var clientForReturn = _mapper.Map <ClientForReturnDto>(clientEntity);

            return(CreatedAtRoute("GetClient", new
            {
                id = clientForReturn.Id
            }, clientForReturn));
        }
        public IActionResult UpdateClient(int id, ClientForManipulation client)
        {
            var clientFromRepo = _repo.GetClient(id);

            //upsert
            if (clientFromRepo == null)
            {
                var resultAction = AddClient(client);
                return(resultAction);
            }
            _mapper.Map(client, clientFromRepo);
            _repo.UpdateClient(clientFromRepo);
            _repo.Save();
            return(NoContent());
        }