/// <summary> /// Adding a new TricksProgress /// to the DB /// </summary> /// <param name="tricksProgress"></param> /// <returns>The added TricksProgress</returns> public async Task <Core.Model.TricksProgress> PostTricksProgressAsync(Core.Model.TricksProgress tricksProgress) { var exists = await _dbContext.TricksProgress .FirstOrDefaultAsync(t => t.PetId == tricksProgress.PetId && t.TrickId == tricksProgress.TrickId); if (exists is null) { var newTricks = new TricksProgress { PetId = tricksProgress.PetId, TrickId = tricksProgress.TrickId, }; _logger.LogInformation("Adding a new TricksProgress."); _dbContext.Add(newTricks); await _dbContext.SaveChangesAsync(); // After the Entity is added, return // the Entity by getting the max id (Newest Entity) int id = await _dbContext.TricksProgress.MaxAsync(i => i.Id); var nt = await _dbContext.TricksProgress .Include(t => t.Trick) .FirstOrDefaultAsync(t => t.Id == id); return(Mapper.MapTricksProgress(nt)); } else { _logger.LogInformation("Dog with this ID {tricksProgressId} already knows this Trick.", tricksProgress.PetId); return(null); } }
public static Model.TricksProgress MapTricksProgress(Core.Model.TricksProgress tricksProgress) { return(new Model.TricksProgress { Id = tricksProgress.Id, PetId = tricksProgress.PetId, TrickId = tricksProgress.TrickId, Progress = tricksProgress.Progress, Trick = MapTricks(tricksProgress.Trick) }); }
/// <summary> /// Updates a dogs Trick Progress based /// on Dogs ID /// </summary> /// <param name="id"></param> /// <param name="tricksProgress"></param> /// <returns>The updated TricksProgress</returns> public async Task <Core.Model.TricksProgress> PutTricksProgressAsync(int id, Core.Model.TricksProgress tricksProgress) { var oldTricks = await _dbContext.TricksProgress .FirstOrDefaultAsync(t => t.Id == tricksProgress.Id); if (oldTricks is null) { _logger.LogError("The TricksProgress with ID {tricksProgressId} does not exist.", tricksProgress.Id); return(null); } else { _logger.LogInformation("Updating a TricksProgress with ID {tricksProgressId}", tricksProgress.Id); // This method only marks the properties changed // as modified var newTricks = Mapper.MapTricksProgress(tricksProgress); _dbContext.Entry(oldTricks).CurrentValues.SetValues(newTricks); await _dbContext.SaveChangesAsync(); return(Mapper.MapTricksProgress(newTricks)); } }