Esempio n. 1
0
        /// <summary>
        /// Creates the recurring chores.
        /// </summary>
        /// <param name="frequencyType">The frquency type.</param>
        /// <param name="recurringChoreId">The recurring chore identifier.</param>
        /// <param name="familyId">The family identifier.</param>
        /// <param name="isJob">Is Job.</param>
        /// <param name="weekDayName">The weekday name.</param>
        public void CreateChores(FrequencyType frequencyType, int?recurringChoreId = null, int?familyId = null, bool isJob = false, DayOfWeek?weekDayName = null)
        {
            var recurringChores = (!recurringChoreId.HasValue) ? GetRecurringChores(frequencyType) : Repository.Table <Chore>().Where(p => p.Id.Equals(recurringChoreId.Value));

            foreach (var recurringChore in recurringChores.ToList())
            {
                if (string.IsNullOrEmpty(recurringChore.FrequencyRange))
                {
                    continue;
                }

                if (isJob)
                {
                    // Get Family ID
                    var family = _familyService.GetFamilyByMemberId(recurringChore.FamilyMemberID);
                    if (family?.FamilySubscription?.Status == SubscriptionStatus.Active)
                    {
                        familyId = family.Id;
                    }
                    else
                    {
                        continue;
                    }
                }

                var weekDays      = recurringChore.FrequencyRange.Split(',');
                var choreAddedDay = weekDayName;

                foreach (var weekDay in weekDays)
                {
                    var dayOfWeek = (DayOfWeek)(Enum.Parse(typeof(DayOfWeek), weekDay));
                    var dueDate   = DateTime.UtcNow.AddDays(-1 * (DateTime.UtcNow.DayOfWeek - dayOfWeek)).ToUniversalTime();

                    var isPastDay = (weekDayName.HasValue) ? ((dayOfWeek - weekDayName.Value) < 0) : ((dueDate - DateTime.UtcNow).Days) < 0;

                    if (!isPastDay)
                    {
                        var chore = new Chore();
                        chore.Name             = recurringChore.Name;
                        chore.Value            = recurringChore.Value;
                        chore.ImageUrl         = recurringChore.ImageUrl;
                        chore.DueDate          = weekDayName.HasValue ? DateTime.MinValue : dueDate;
                        chore.SystemChoreID    = recurringChore.SystemChoreID;
                        chore.FrequencyType    = recurringChore.FrequencyType;
                        chore.FrequencyRange   = string.Empty;
                        chore.CreatedTime      = weekDayName.HasValue ? DateTime.MinValue : DateTime.UtcNow;
                        chore.ChoreStatus      = ChoreStatus.Active;
                        chore.RecurringChoreID = recurringChore.Id;
                        chore.FamilyMemberID   = recurringChore.FamilyMemberID;

                        var dayName = weekDayName.HasValue ? (DayOfWeek?)dayOfWeek : null;
                        _choreService.Add(chore, familyId, dayName);
                    }
                }
            }
        }
Esempio n. 2
0
        public IActionResult Post([FromBody] ChoreModel newChore)
        {
            try {
                _choreService.Add(newChore.ToDomainModel());
            }
            catch (System.Exception ex)
            {
                ModelState.AddModelError("AddChore", ex.GetBaseException().Message);
                return(BadRequest(ModelState));
            }

            return(CreatedAtAction("Get", new { Id = newChore.Id }, newChore));
        }
Esempio n. 3
0
        public HttpResponseMessage Add([FromBody] Chore chore, DayOfWeek choreCreatedDay)
        {
            if (chore == null)
            {
                throw new InvalidParameterException("Please provide a valid chore");
            }

            if (_currentUserService.MemberType != MemberType.Admin && _currentUserService.MemberType != MemberType.Parent)
            {
                throw new UnauthorizedAccessException();
            }

            chore = _choreService.Add(chore, null, choreCreatedDay);
            if (chore.FrequencyType != FrequencyType.Once)
            {
                _recurringChoreService.CreateChores(chore.FrequencyType, chore.Id, _currentUserService.FamilyID, false, choreCreatedDay);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, chore));
        }
        /// <summary>
        /// Save chore workflow
        /// </summary>
        /// <param name="choreWorkflow">Chore workflow</param>
        public void SaveChoreWorkflow(ChoreWorkflow choreWorkflow)
        {
            choreWorkflow.WorkflowStatus = WorkflowStatus.Completed;
            Repository.Update(choreWorkflow);

            // Add new chore from chore work flow via sms
            var chore = new Chore
            {
                ChoreStatus    = ChoreStatus.Active,
                CreatedTime    = DateTime.UtcNow,
                DueDate        = choreWorkflow.DueDate,
                FamilyMemberID = choreWorkflow.ChildMemberID,
                FrequencyRange = choreWorkflow.FrequencyRange,
                FrequencyType  = choreWorkflow.FrequencyType.Value,
                Name           = choreWorkflow.Name.FirstCharToUpper(),
                Value          = choreWorkflow.Value.Value
            };

            chore = _choreService.Add(chore, choreWorkflow.ChildMember.User.FamilyID, DateTime.Now.DayOfWeek);
            if (chore.FrequencyType != FrequencyType.Once)
            {
                _recurringChoreService.UpdateRecurringChore(chore.Id, chore.FrequencyType, choreWorkflow.ChildMember.User.FamilyID, DateTime.Now.DayOfWeek);
            }
        }