public async Task <bool> IsAuthorizedToStoreProgress(Models.DTO.ChallengeProgress challengeProgress, Guid deviceGuid)
        {
            var postingUser = await _getUsersService.GetUserByDeviceAsync(deviceGuid);

            var targetUser = await _getUsersService.GetUserByIdAsync(deviceGuid, challengeProgress.UserId);

            if (targetUser == null)
            {
                return(false);
            }

            if (targetUser == postingUser && challengeProgress.Status <= Models.ProgressStatus.Completed)
            {
                return(true);
            }

            return(postingUser.UnitAdmin);
        }
        public async Task <IHttpActionResult> GetTaskProgresses([FromUri] long?lastUpdate = null)
        {
            var claimUser  = this.User as ClaimsPrincipal;
            var deviceGuid = Guid.Parse(claimUser.FindFirst("DeviceId").Value);
            var unitId     = (await _getUsersService.GetUserByDeviceAsync(deviceGuid)).UnitId;

            IEnumerable <TaskProgress> tProgresses;

            if (lastUpdate == null)
            {
                tProgresses = await _tasksProgressService.GetTasksProgressesByUnitIdAsync(unitId);
            }
            else
            {
                var from = new DateTime(lastUpdate.Value);
                tProgresses = await _tasksProgressService.GetTasksProgressesByUnitIdAsync(unitId, from);
            }

            var DTOs = tProgresses.Select(tp => (Models.DTO.TaskProgress)tp);

            return(Ok(DTOs));
        }