Пример #1
0
        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);
        }
Пример #2
0
        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));
        }
Пример #3
0
        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));
        }
Пример #4
0
        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));
        }
Пример #5
0
        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);
        }
Пример #6
0
        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));
        }