public async Task <List <TaskActivity> > CreateList(TaskWeek taskWeek, List <TaskDefinition> taskDefinitionList) { var taskActivityList = new List <TaskActivity>(); foreach (var taskDefinition in taskDefinitionList) { var taskActivity = new TaskActivity() { UserIdentifier = taskWeek.UserIdentifier, TaskWeekId = taskWeek.Id.Value, TaskGroupId = taskDefinition.TaskGroupId, Sequence = taskDefinition.Sequence, MondayStatusId = (int)Constants.ActivityStatus.Incomplete, TuesdayStatusId = (int)Constants.ActivityStatus.Incomplete, WednesdayStatusId = (int)Constants.ActivityStatus.Incomplete, ThursdayStatusId = (int)Constants.ActivityStatus.Incomplete, FridayStatusId = (int)Constants.ActivityStatus.Incomplete, SaturdayStatusId = (int)Constants.ActivityStatus.Incomplete, SundayStatusId = (int)Constants.ActivityStatus.Incomplete, TaskDefinitionId = taskDefinition.Id.Value }; taskActivityList.Add(taskActivity); } await CreateList(taskActivityList); return(taskActivityList); }
public async Task <IActionResult> Run( [HttpTrigger(Constants.AUTHORIZATION_LEVEL, "put", Route = "taskweekset/{id?}")] HttpRequest req, ILogger log, CancellationToken ct, int?id) { log.LogTrace($"PutTaskWeek function processed a request for id:{id}."); TaskWeek data = null; try { string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); data = JsonConvert.DeserializeObject <TaskWeek>(requestBody); var userIdentifier = await GetTargetUserIdentifier(req); if (data.UserIdentifier != userIdentifier && !await IsInRole(userIdentifier, Constants.Role.Parent)) { throw new SecurityException("Invalid attempt to access a record by an invalid user"); } await _taskWeekService.Update(data); } catch (Exception exception) { return(new BadRequestObjectResult($"Error trying to execute PutTaskWeek. {exception.Message}")); } return(new OkObjectResult(data.Id.Value)); }
public async Task <IActionResult> Run( [HttpTrigger(Constants.AUTHORIZATION_LEVEL, "get", Route = "getorcreatetaskactivitylist"), ] HttpRequest req, ILogger log) { var startDate = req.Query.GetValue <DateTime>("weekstartdate").StartOfDay(); var taskWeekId = req.Query.GetValue <int>("taskweekid"); var callingUserIdentifier = req.GetUserIdentifier(); log.LogTrace($"GetTaskActivityListByDay function processed a request by userIdentifier={callingUserIdentifier}, startDate={startDate}."); List <TaskActivity> taskActivityList = null; try { TaskWeek taskWeek = null; if (taskWeekId > 0) { taskWeek = await _taskWeekService.Get(taskWeekId); if (taskWeek.UserIdentifier != callingUserIdentifier && !await _authorizationService.IsInRole(callingUserIdentifier, Constants.Role.Parent)) { var targetAccount = await _authorizationService.GetAccount(taskWeek.UserIdentifier); var callingAccount = await _authorizationService.GetAccount(callingUserIdentifier); throw new SecurityException($"Unauthorized access of taskweek for {targetAccount.Name} by {callingAccount.Name}"); } } else { if (await _authorizationService.IsInRole(callingUserIdentifier, Constants.Role.Parent)) { throw new SecurityException("Invalid attempt by parent to retrieve or create a taskweek by date"); } taskWeek = await _taskWeekService.Get(callingUserIdentifier, startDate); } taskActivityList = await _taskActivityService.GetOrCreate(taskWeek); } catch (Exception exception) { return(new BadRequestObjectResult(new BadRequestErrorMessageResult(exception.Message))); } return(new OkObjectResult(taskActivityList)); }
public async Task <IActionResult> Run( [HttpTrigger(Constants.AUTHORIZATION_LEVEL, "get", Route = "getorcreatetaskweek"), ] HttpRequest req, ILogger log) { var userIdentifier = req.GetUserIdentifier(); var startDate = req.Query.GetValue <DateTime>("startdate").StartOfDay(); log.LogTrace($"GetTaskActivityListByDay function processed a request for userIdentifier={userIdentifier}, startDate={startDate}."); TaskWeek taskWeek = null; try { Ensure.That(req.Query.ContainsKey("startdate")).IsTrue(); taskWeek = await _taskWeekService.Get(userIdentifier, startDate); if (taskWeek == null) { var callingAccount = await _authorizationService.GetAccount(userIdentifier); if (await IsParent(req)) { throw new SecurityException($"Invalid attempt by {callingAccount.Name} to create a new task week."); } taskWeek = await _taskWeekService.Create(userIdentifier, startDate); var account = await _accountService.GetByUser(userIdentifier); account.ActiveTaskWeekId = taskWeek.Id; await _accountService.Update(account); } if (taskWeek.UserIdentifier != userIdentifier && !await IsInRole(userIdentifier, Constants.Role.Parent)) { throw new SecurityException("Invalid attempt to access a record by an invalid user"); } } catch (Exception exception) { return(new BadRequestObjectResult(new BadRequestErrorMessageResult(exception.Message))); } return(new OkObjectResult(taskWeek)); }
public async Task <List <TaskActivity> > GetOrCreate(TaskWeek taskWeek) { var taskActivityList = await GetList(taskWeek.UserIdentifier, taskWeek.Id.Value); if (taskActivityList == null) { taskActivityList = new List <TaskActivity>(); } if (taskActivityList.Count() == 0) { var taskDefinitionList = await _taskDefinitonService.GetList(); taskActivityList = await CreateList(taskWeek, taskDefinitionList); } return(taskActivityList); }
public async Task <IActionResult> Run( [HttpTrigger(Constants.AUTHORIZATION_LEVEL, "post", Route = "accepttaskweek")] HttpRequest req, ILogger log, CancellationToken ct) { TaskWeek data = null; try { string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); data = JsonConvert.DeserializeObject <TaskWeek>(requestBody); log.LogTrace($"AcceptTaskWeek function processed a request for taskWeekId:{data.Id}."); var userIdentifier = await GetTargetUserIdentifier(req); if (!await IsParent(req)) { throw new SecurityException("Invalid attempt to accept a taskweek by an invalid user"); } await _taskWeekService.Update(data, false); var account = await _accountService.GetByUser(data.UserIdentifier); account.Balance += data.Value; await _accountService.Update(account, false); var transaction = new TransactionLog() { AccountId = account.Id.Value, UserIdentifier = req.GetUserIdentifier(), Amount = data.Value, CategoryId = (int)Constants.TransactionCategory.Deposit, Date = DateTime.Now, Description = "Weekly allowance deposit." }; await _transactionLogService.Create(transaction, false); await _transactionLogService.SaveChanges(); } catch (Exception exception) { return(new BadRequestObjectResult($"Error trying to execute PutTaskWeek. {exception.Message}")); } return(new OkObjectResult(data.Id.Value)); }