public async Task <IActionResult> CreateOuraActivity([FromBody] OuraActivityRequest ouraActivityRequest)
        {
            if (ouraActivityRequest == null)
            {
                _logger.LogError("CreateOuraActivity: OuraActivityRequest object sent from client is null.");
                return(BadRequest("OuraActivityRequest object is null"));
            }
            if (!ModelState.IsValid)
            {
                _logger.LogError("CreateOuraActivity: Invalid OuraActivityRequest object sent from client.");
                return(BadRequest("Invalid OuraActivityRequest object"));
            }
            string userId = HttpContext.User.Claims.Single(x => x.Type == "id").Value;
            string role   = HttpContext.User.Claims.Single(x => x.Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/role").Value;

            if (role == Role.SubAdministratorRole)
            {
                if (!await ParticipantInOrganizationOfUserIdAsync(ouraActivityRequest.ParticipantId, userId))
                {
                    return(BadRequest("A sub-administrator can create only oura activities of a participant of own organization"));
                }
            }
            else if (role == Role.SupervisorRole)
            {
                if (!await ParticipantInStudiesOfUserIdAsync(ouraActivityRequest.ParticipantId, userId))
                {
                    return(BadRequest("A supervisor can create only oura activities of a participant of own studies"));
                }
            }
            else if (role == Role.ParticipantRole)
            {
                if (!await ParticipantSameAsUserIdAsync(ouraActivityRequest.ParticipantId, userId))
                {
                    return(BadRequest("A participant can create only own oura activities"));
                }
            }
            else if (role == Role.TherapistRole)
            {
                var participant = await _coadaptService.Participant.GetParticipantByIdAsync(ouraActivityRequest.ParticipantId);

                if (!await ParticipantMonitoredByTherapistOfUserIdAsync(participant, userId))
                {
                    return(BadRequest("A therapist can create only oura activities of monitored participants"));
                }
            }
            var ouraActivity = new OuraActivity();

            ouraActivity.FromRequest(ouraActivityRequest);
            _coadaptService.OuraActivity.CreateOuraActivity(ouraActivity);
            await _coadaptService.SaveAsync();

            return(CreatedAtRoute("OuraActivityById", new { id = ouraActivity.Id }, ouraActivity));
        }
コード例 #2
0
 public static void FromRequest(this OuraActivity ouraActivity, OuraActivityRequest request)
 {
     ouraActivity.ParticipantId          = request.ParticipantId;
     ouraActivity.SummaryDate            = request.SummaryDate;
     ouraActivity.TimezoneOffset         = request.TimezoneOffset;
     ouraActivity.DayStart               = request.DayStart;
     ouraActivity.DayEnd                 = request.DayEnd;
     ouraActivity.Score                  = request.Score;
     ouraActivity.ScoreRecoveryTime      = request.ScoreRecoveryTime;
     ouraActivity.ScoreStayActive        = request.ScoreStayActive;
     ouraActivity.ScoreTrainingFrequency = request.ScoreTrainingFrequency;
     ouraActivity.ScoreTrainingVolume    = request.ScoreTrainingVolume;
     ouraActivity.ScoreMeetDailyTargets  = request.ScoreMeetDailyTargets;
     ouraActivity.ScoreMoveEveryHour     = request.ScoreMoveEveryHour;
     ouraActivity.DailyMovement          = request.DailyMovement;
     ouraActivity.NonWear                = request.NonWear;
     ouraActivity.Rest             = request.Rest;
     ouraActivity.Inactive         = request.Inactive;
     ouraActivity.InactivityAlerts = request.InactivityAlerts;
     ouraActivity.Low              = request.Low;
     ouraActivity.Medium           = request.Medium;
     ouraActivity.High             = request.High;
     ouraActivity.Steps            = request.Steps;
     ouraActivity.CaloriesActive   = request.CaloriesActive;
     ouraActivity.CaloriesTotal    = request.CaloriesTotal;
     ouraActivity.Met1Min          = string.Join(",", request.Met1Min);
     ouraActivity.MetMinHigh       = request.MetMinHigh;
     ouraActivity.MetMinInactive   = request.MetMinInactive;
     ouraActivity.MetMinLow        = request.MetMinLow;
     ouraActivity.MetMinMedium     = request.MetMinMedium;
     ouraActivity.MetMinMediumPlus = request.MetMinMediumPlus;
     ouraActivity.AverageMet       = request.AverageMet;
     ouraActivity.Class5Min        = request.Class5Min;
     ouraActivity.TargetCalories   = request.TargetCalories;
     ouraActivity.TargetKm         = request.TargetKm;
     ouraActivity.TargetMiles      = request.TargetMiles;
     ouraActivity.ToTargetKm       = request.ToTargetKm;
     ouraActivity.ToTargetMiles    = request.ToTargetMiles;
 }