/// <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); } } } }
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)); }
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); } }