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