public DTO.Kid CreateKid(Kid kid)
 {
     return new DTO.Kid
     {
         Id = kid.Id,
         UserUnitId = kid.UserUnitId,
         FirstName = kid.FirstName,
         LastName = kid.LastName
     };
 }
 public RepositoryActionResult<Kid> AddKid(Kid kid)
 {
     try
     {
         _ctx.Kids.Add(kid);
         var result =_ctx.SaveChanges();
         if (result > 0)
         {
             return new RepositoryActionResult<Kid>(kid, RepositoryActionStatus.Created);
         }
         else
         {
             return new RepositoryActionResult<Kid>(kid, RepositoryActionStatus.NothingModified);
         }
     }
     catch (Exception ex)
     {
         return new RepositoryActionResult<Kid>(kid, RepositoryActionStatus.Error, ex);
     }
 }
        public RepositoryActionResult<Kid> UpdateKid(Kid kid)
        {
            try
            {
                // you can only update when an expense already exists for this id

                var existingKid = _ctx.Kids.FirstOrDefault(k => k.Id == kid.Id);

                if (existingKid == null)
                {
                    return new RepositoryActionResult<Kid>(kid, RepositoryActionStatus.NotFound);
                }

                // change the original entity status to detached; otherwise, we get an error on attach
                // as the entity is already in the dbSet

                // set original entity state to detached
                _ctx.Entry(existingKid).State = EntityState.Detached;

                // attach & save
                _ctx.Kids.Attach(kid);

                // set the updated entity state to modified, so it gets updated.
                _ctx.Entry(kid).State = EntityState.Modified;

                var result = _ctx.SaveChanges();
                if (result > 0)
                {
                    return new RepositoryActionResult<Kid>(kid, RepositoryActionStatus.Updated);
                }
                else
                {
                    return new RepositoryActionResult<Kid>(kid, RepositoryActionStatus.NothingModified, null);
                }
            }
            catch (Exception ex)
            {
                return new RepositoryActionResult<Kid>(null, RepositoryActionStatus.Error, ex);
            }
        }