예제 #1
0
        public HttpResponseMessage UpdateChoreList(string AuthToken, int ChoreListId, string Name, int StatusId)
        {
            try
            {
                ChoreList ChoreListObject = new ChoreList
                {
                    Id       = ChoreListId,
                    Name     = Name,
                    StatusId = StatusId
                };

                var User = UserRepository.RefreshAuthToken(AuthToken);

                //check if User Matches Id
                if (User.Id != ChoreRepository.GetChoreList(ChoreListId).UserId)
                {
                    throw new Exception("Unathorized");
                }

                return(OKResponse(new _ChoreList(ChoreRepository.UpdateChoreList(ChoreListId, ChoreListObject))));
            }
            catch (Exception ex)
            {
                return(ErrorResponse(ex));
            }
        }
예제 #2
0
        public ChoreList UpdateChoreList(int Id, ChoreList NewChoreList)
        {
            try
            {
                var OldChoreList = db.ChoreLists.SingleOrDefault(x => x.Id == Id);

                OldChoreList.Name = NewChoreList.Name;

                //save changes to before setting active
                db.SaveChanges();

                OldChoreList.StatusId = NewChoreList.StatusId;
                if (ChoreListIsValid(Id))
                {
                    db.SaveChanges();
                }
                else
                {
                    OldChoreList.StatusId = 2;
                    db.SaveChanges();
                }

                db.SaveChanges();

                return(OldChoreList);
            }
            catch (Exception ex)
            {
                throw Utility.ThrowException(ex);
            }
        }
예제 #3
0
 private void UpdateCurrentChore()
 {
     if (ChoreList.Count > 0)
     {
         CurrentChore = ChoreList.FirstOrDefault();
     }
     else
     {
         EndSession();
     }
 }
예제 #4
0
        public async Task <IActionResult> CreateChoreList([Bind("DayOfWeek,Reward,Title,Comment,ChildId")] ChoreList choreList)
        {
            if (ModelState.IsValid)
            {
                _context.Add(choreList);
                await _context.SaveChangesAsync();

                return(RedirectToAction("CreateChoreItem", new { id = choreList.Id }));
            }

            return(RedirectToAction(nameof(Index)));
        }
예제 #5
0
        public ChoreList CreateChoreList(ChoreList Value)
        {
            try
            {
                //always start as inactive
                Value.StatusId = 2;
                Value          = db.ChoreLists.Add(Value);

                db.SaveChanges();

                return(GetChoreList(Value.Id));
            }
            catch (Exception ex)
            {
                throw Utility.ThrowException(ex);
            }
        }
예제 #6
0
        public _ChoreList(ChoreList Value)
        {
            //recreate chorelist sub lists
            Value.ChoreUsers        = Value.ChoreUsers.Where(x => x.IsActive).OrderBy(x => x.SortOrder).ToList();
            Value.Chores            = Value.Chores.Where(x => x.IsActive).OrderBy(x => x.SortOrder).ToList();
            Value.RotationIntervals = Value.RotationIntervals.Where(x => x.IsActive).ToList();

            TinyMapper.Bind <ChoreList, _ChoreList>(config =>
            {
                config.Bind(x => x.ChoreUsers, x => x.ChoreUsers);
                config.Bind(x => x.Chores, x => x.Chores);
                config.Bind(x => x.RotationIntervals, x => x.RotationIntervals);
            });

            TinyMapper.Map <ChoreList, _ChoreList>(Value, this);
            if (Value.ChoreListStatu != null)
            {
                ChoreListStatusName = Value.ChoreListStatu.ChoreListStatusName;
            }
        }
예제 #7
0
        private void StartSession()
        {
            ChoreSessionStatus         = SessionStatus.InProgress;
            SessionMinutesLabelVisible = false;
            SessionMinutesVisible      = false;

            TimeRemaining       = NumberOfSessionMinutes * 60;
            ChoreTimer          = new Timer(NumberOfSessionMinutes * 60 * 1000);
            ChoreTimer.Interval = 1000;
            ChoreTimer.Elapsed += ChoreTimer_Elapsed;
            ChoreTimer.Start();

            TimerValue               = "Chorin' Time Left " + TimeSpan.FromSeconds(TimeRemaining).ToString("t");
            TimerValueVisible        = true;
            FinishChoreButtonVisible = true;
            CurrentChoreNameVisible  = true;

            var allChores           = _choreService.GetActiveChoresNoAsync() as List <Chore>;
            var choreStillAvailable = true;
            var minutesRemaining    = NumberOfSessionMinutes;

            do
            {
                var addChore = allChores.Where(x => x.Minutes < minutesRemaining)
                               .Where(x => ChoreList.Contains(x) == false)
                               .OrderByDescending(x => x.Minutes)
                               .FirstOrDefault();
                if (addChore != null)
                {
                    minutesRemaining -= addChore.Minutes;
                    ChoreList.Add(addChore);
                }
                else
                {
                    choreStillAvailable = false;
                }
            } while (choreStillAvailable);

            UpdateCurrentChore();
            UpdateSessionButtons();
        }
예제 #8
0
        public HttpResponseMessage CreateChoreList(string AuthToken, string ChoreListValues)
        {
            try
            {
                _User User = new _User(UserRepository.RefreshAuthToken(AuthToken));

                ChoreList ChoreListObject = JsonConvert.DeserializeObject <ChoreList>(ChoreListValues);

                //check if User Matches Id
                if (User.Id != ChoreListObject.UserId)
                {
                    throw new Exception("Unathorized");
                }

                return(OKResponse(new _ChoreList(ChoreRepository.CreateChoreList(ChoreListObject))));
            }
            catch (Exception ex)
            {
                return(ErrorResponse(ex));
            }
        }
예제 #9
0
        public ChoreProgressPageViewModel()
        {
            Title = "Time for Chorin'";

            StartSession_Clicked = new Command(
                execute: () =>
            {
                StartSession();
                RefreshCanExecute();
            },
                canExecute: () =>
            {
                return(ChoreSessionStatus == SessionStatus.NewSession);
            });

            PauseSession_Clicked = new Command(
                execute: () =>
            {
                PauseSession();
                RefreshCanExecute();
            },
                canExecute: () =>
            {
                return(ChoreSessionStatus == SessionStatus.InProgress);
            });

            ContinueSession_Clicked = new Command(
                execute: () =>
            {
                ContinueSession();
                RefreshCanExecute();
            },
                canExecute: () =>
            {
                return(ChoreSessionStatus == SessionStatus.Paused);
            });

            EndSession_Clicked = new Command(
                execute: () =>
            {
                EndSession();
                RefreshCanExecute();
            },
                canExecute: () =>
            {
                return(ChoreSessionStatus == SessionStatus.Paused || ChoreSessionStatus == SessionStatus.InProgress);
            });

            FinishCurrentChore_Clicked = new Command(
                execute: () =>
            {
                ChoreList.Remove(CurrentChore);

                if (CurrentChore.Repeatable)
                {
                    _choreService.Save(new Chore(CurrentChore));
                }

                CurrentChore.ChoreStatus     = ChoreStatus.Completed;
                CurrentChore.DateLastModifed = DateTime.Now;
                _choreService.Save(CurrentChore);

                UpdateCurrentChore();
            },
                canExecute: () =>
            {
                return(true);
            });
        }