Example #1
0
        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();
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        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());
        }