public void CompleteChore(CompleteChorePayload data) { var dateToComplete = GetDateTimeThisWeek(data.Day); var endOfDay = GetEndOfDay(dateToComplete); var alreadyCompleted = _dbContext.CompletedChores.Any(x => x.ChildId == data.ChildId && x.ChoreId == data.ChoreId && x.Date.HasValue && x.Date.Value >= dateToComplete && x.Date.Value <= endOfDay); if (alreadyCompleted) { return; } var completedChore = new CompletedChore { ChoreId = data.ChoreId, ChildId = data.ChildId, Date = dateToComplete }; _dbContext.CompletedChores.Add(completedChore); _dbContext.SaveChanges(); }
/// <summary> /// Creates the DTO that passes to the front end so it can show notification of completion (needed to pass a couple extra params to front end) /// </summary> /// <param name="completedChore"></param> /// <param name="robotName"></param> /// <param name="choreName"></param> /// <returns></returns> private CompletedChoreDTO CreateCompletedTaskDTO(CompletedChore completedChore, string robotName, string choreName) { var completedChoreResponse = new CompletedChoreDTO { TimeTakenToComplete = completedChore.TimeTakenToComplete, ChoreCompletedID = completedChore.ChoreCompletedID, RobotCompletedID = completedChore.RobotCompletedID, ChoreCompletedSuccessfully = true, RobotName = robotName, ChoreCompleted = choreName }; return(completedChoreResponse); }
/// <summary> /// Updates the Completed Chores table with the chore that was just performed /// </summary> /// <param name="timer"></param> /// <param name="choreId"></param> /// <param name="robotId"></param> /// <returns></returns> private async Task <CompletedChore> UpdateCompletedChores(Stopwatch timer, int choreId, int robotId) { var completedChore = new CompletedChore { TimeTakenToComplete = timer.ElapsedMilliseconds, ChoreCompletedID = choreId, RobotCompletedID = robotId, ChoreCompletedSuccessfully = true }; _RobotAppContext.CompletedChores.Add(completedChore); await _RobotAppContext.SaveChangesAsync(); return(completedChore); }
public List <CompletedChore> GetChoreItems([FromBody] GetChoreItemsRequestObject requestObject) { ProMaUser user = DataController.LoggedInUser; if (user == null) { throw new NotLoggedInException(); } DateTime dayForRequest = new DateTime(requestObject.year, requestObject.month, requestObject.day).Date; List <CompletedChore> returnThis = CompletedChoreHandler.GetChoreItemsForDateAndUser(user.UserId, dayForRequest); // we need to hydrate the data appropriately foreach (CompletedChore curChore in returnThis) { curChore.SharedChore = SharedChoreHandler.GetSharedChore(curChore.SharedChoreId); if (curChore.UserId.HasValue) { curChore.CompletedUser = ProMaUserHandler.GetUser(curChore.UserId.Value); } curChore.SharedChore.Membership = SharedChoreMembershipHandler.GetSharedChoreMembership(curChore.SharedChoreId, user.UserId); // find the last completed version of this chore // we only need to do this if this chore isn't complete, because it won't be displayed in the ui otherwise if (!curChore.Completed) { CompletedChore lastCompletion = CompletedChoreHandler.GetPreviousCompletedChore(curChore); if (lastCompletion != null) { curChore.LastDoneUser = ProMaUserHandler.GetUser(lastCompletion.UserId.Value); curChore.LastDoneTime = lastCompletion.ChoreDate; } } } return(returnThis.ToList()); }