public static void FromRequest(this OuraSleep ouraSleep, OuraSleepRequest request)
 {
     ouraSleep.ParticipantId     = request.ParticipantId;
     ouraSleep.SummaryDate       = request.SummaryDate;
     ouraSleep.PeriodId          = request.PeriodId;
     ouraSleep.TimezoneOffset    = request.TimezoneOffset;
     ouraSleep.BedtimeStart      = request.BedtimeStart;
     ouraSleep.BedtimeEnd        = request.BedtimeEnd;
     ouraSleep.Score             = request.Score;
     ouraSleep.ScoreTotal        = request.ScoreTotal;
     ouraSleep.ScoreDisturbances = request.ScoreDisturbances;
     ouraSleep.ScoreAlignment    = request.ScoreAlignment;
     ouraSleep.ScoreDeep         = request.ScoreDeep;
     ouraSleep.ScoreEfficiency   = request.ScoreEfficiency;
     ouraSleep.ScoreLatency      = request.ScoreLatency;
     ouraSleep.ScoreRem          = request.ScoreRem;
     ouraSleep.Total             = request.Total;
     ouraSleep.Duration          = request.Duration;
     ouraSleep.Awake             = request.Awake;
     ouraSleep.Light             = request.Light;
     ouraSleep.Rem              = request.Rem;
     ouraSleep.Deep             = request.Deep;
     ouraSleep.OnsetLatency     = request.OnsetLatency;
     ouraSleep.Restless         = request.Restless;
     ouraSleep.Efficiency       = request.Efficiency;
     ouraSleep.MidpointTime     = request.MidpointTime;
     ouraSleep.HrLowest         = request.HrLowest;
     ouraSleep.HrAverage        = request.HrAverage;
     ouraSleep.RmsSd            = request.RmsSd;
     ouraSleep.BreathAverage    = request.BreathAverage;
     ouraSleep.TemperatureDelta = request.TemperatureDelta;
     ouraSleep.Hypnogram5Min    = request.Hypnogram5Min;
     ouraSleep.Hr5Min           = string.Join(",", request.Hr5Min);
     ouraSleep.RmsSd5Min        = string.Join(",", request.RmsSd5Min);
 }
 public static void Map(this OuraSleep dbOuraSleep, OuraSleep ouraSleep)
 {
     dbOuraSleep.ParticipantId     = ouraSleep.ParticipantId;
     dbOuraSleep.SummaryDate       = ouraSleep.SummaryDate;
     dbOuraSleep.PeriodId          = ouraSleep.PeriodId;
     dbOuraSleep.TimezoneOffset    = ouraSleep.TimezoneOffset;
     dbOuraSleep.BedtimeStart      = ouraSleep.BedtimeStart;
     dbOuraSleep.BedtimeEnd        = ouraSleep.BedtimeEnd;
     dbOuraSleep.Score             = ouraSleep.Score;
     dbOuraSleep.ScoreTotal        = ouraSleep.ScoreTotal;
     dbOuraSleep.ScoreDisturbances = ouraSleep.ScoreDisturbances;
     dbOuraSleep.ScoreAlignment    = ouraSleep.ScoreAlignment;
     dbOuraSleep.ScoreDeep         = ouraSleep.ScoreDeep;
     dbOuraSleep.ScoreEfficiency   = ouraSleep.ScoreEfficiency;
     dbOuraSleep.ScoreLatency      = ouraSleep.ScoreLatency;
     dbOuraSleep.ScoreRem          = ouraSleep.ScoreRem;
     dbOuraSleep.Total             = ouraSleep.Total;
     dbOuraSleep.Duration          = ouraSleep.Duration;
     dbOuraSleep.Awake             = ouraSleep.Awake;
     dbOuraSleep.Light             = ouraSleep.Light;
     dbOuraSleep.Rem              = ouraSleep.Rem;
     dbOuraSleep.Deep             = ouraSleep.Deep;
     dbOuraSleep.OnsetLatency     = ouraSleep.OnsetLatency;
     dbOuraSleep.Restless         = ouraSleep.Restless;
     dbOuraSleep.Efficiency       = ouraSleep.Efficiency;
     dbOuraSleep.MidpointTime     = ouraSleep.MidpointTime;
     dbOuraSleep.HrLowest         = ouraSleep.HrLowest;
     dbOuraSleep.HrAverage        = ouraSleep.HrAverage;
     dbOuraSleep.RmsSd            = ouraSleep.RmsSd;
     dbOuraSleep.BreathAverage    = ouraSleep.BreathAverage;
     dbOuraSleep.TemperatureDelta = ouraSleep.TemperatureDelta;
     dbOuraSleep.Hypnogram5Min    = ouraSleep.Hypnogram5Min;
     dbOuraSleep.Hr5Min           = ouraSleep.Hr5Min;
     dbOuraSleep.RmsSd5Min        = ouraSleep.RmsSd5Min;
 }
        public async Task <IActionResult> CreateOuraSleep([FromBody] OuraSleepRequest ouraSleepRequest)
        {
            if (ouraSleepRequest == null)
            {
                _logger.LogError("CreateOuraSleep: OuraSleepRequest object sent from client is null.");
                return(BadRequest("OuraSleepRequest object is null"));
            }
            if (!ModelState.IsValid)
            {
                _logger.LogError("CreateOuraSleep: Invalid OuraSleepRequest object sent from client.");
                return(BadRequest("Invalid OuraSleepRequest 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(ouraSleepRequest.ParticipantId, userId))
                {
                    return(BadRequest("A sub-administrator can create only oura sleeps of a participant of own organization"));
                }
            }
            else if (role == Role.SupervisorRole)
            {
                if (!await ParticipantInStudiesOfUserIdAsync(ouraSleepRequest.ParticipantId, userId))
                {
                    return(BadRequest("A supervisor can create only oura sleeps of a participant of own studies"));
                }
            }
            else if (role == Role.ParticipantRole)
            {
                if (!await ParticipantSameAsUserIdAsync(ouraSleepRequest.ParticipantId, userId))
                {
                    return(BadRequest("A participant can create only own oura sleeps"));
                }
            }
            else if (role == Role.TherapistRole)
            {
                var participant = await _coadaptService.Participant.GetParticipantByIdAsync(ouraSleepRequest.ParticipantId);

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

            ouraSleep.FromRequest(ouraSleepRequest);
            _coadaptService.OuraSleep.CreateOuraSleep(ouraSleep);
            await _coadaptService.SaveAsync();

            return(CreatedAtRoute("OuraSleepById", new { id = ouraSleep.Id }, ouraSleep));
        }
Пример #4
0
        public static OuraSleep ToOuraSleep(this OuraSleepMessage message, int participantId)
        {
            var sleep = new OuraSleep {
                ParticipantId     = participantId,
                SummaryDate       = message.SummaryDate,
                TimezoneOffset    = message.TimezoneOffset,
                PeriodId          = message.PeriodId,
                BedtimeStart      = message.BedtimeStart,
                BedtimeEnd        = message.BedtimeEnd,
                Score             = message.Score,
                ScoreTotal        = message.ScoreTotal,
                ScoreDisturbances = message.ScoreDisturbances,
                ScoreEfficiency   = message.ScoreEfficiency,
                ScoreLatency      = message.ScoreLatency,
                ScoreRem          = message.ScoreRem,
                ScoreDeep         = message.ScoreDeep,
                ScoreAlignment    = message.ScoreAlignment,
                Total             = message.Total,
                Duration          = message.Duration,
                Awake             = message.Awake,
                Light             = message.Light,
                Rem              = message.Rem,
                Deep             = message.Deep,
                OnsetLatency     = message.OnsetLatency,
                Restless         = message.Restless,
                Efficiency       = message.Efficiency,
                MidpointTime     = message.MidpointTime,
                HrLowest         = message.HrLowest,
                HrAverage        = message.HrAverage,
                RmsSd            = message.RmsSd,
                BreathAverage    = message.BreathAverage,
                TemperatureDelta = message.TemperatureDelta,
                Hypnogram5Min    = message.Hypnogram5Min,
                Hr5Min           = string.Join(",", message.Hr5Min),
                RmsSd5Min        = string.Join(",", message.RmsSd5Min)
            };

            return(sleep);
        }