public static void Map(this PhysiologicalSignal dbPhysiologicalSignal, PhysiologicalSignal physiologicalSignal)
 {
     dbPhysiologicalSignal.ParticipantId = physiologicalSignal.ParticipantId;
     dbPhysiologicalSignal.Timestamp     = physiologicalSignal.Timestamp;
     dbPhysiologicalSignal.Type          = physiologicalSignal.Type;
     dbPhysiologicalSignal.Value         = physiologicalSignal.Value;
     dbPhysiologicalSignal.Accuracy      = physiologicalSignal.Accuracy;
 }
 public static void FromRequest(this PhysiologicalSignal physiologicalSignal, PhysiologicalSignalRequest request)
 {
     physiologicalSignal.ParticipantId = request.ParticipantId;
     physiologicalSignal.Timestamp     = request.Timestamp;
     physiologicalSignal.Type          = request.Type;
     physiologicalSignal.Value         = request.Value;
     physiologicalSignal.Accuracy      = request.Accuracy;
 }
        public async Task <IActionResult> CreatePhysiologicalSignal([FromBody] PhysiologicalSignalRequest physiologicalSignalRequest)
        {
            if (physiologicalSignalRequest == null)
            {
                _logger.LogError("CreatePhysiologicalSignal: PhysiologicalSignalRequest object sent from client is null.");
                return(BadRequest("PhysiologicalSignalRequest object is null"));
            }
            if (!ModelState.IsValid)
            {
                _logger.LogError("CreatePhysiologicalSignal: Invalid PhysiologicalSignalRequest object sent from client.");
                return(BadRequest("Invalid PhysiologicalSignalRequest 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(physiologicalSignalRequest.ParticipantId, userId))
                {
                    return(BadRequest("A sub-administrator can create only psychological signals of a participant of own organization"));
                }
            }
            else if (role == Role.SupervisorRole)
            {
                if (!await ParticipantInStudiesOfUserIdAsync(physiologicalSignalRequest.ParticipantId, userId))
                {
                    return(BadRequest("A supervisor can create only psychological signals of a participant of own studies"));
                }
            }
            else if (role == Role.ParticipantRole)
            {
                if (!await ParticipantSameAsUserIdAsync(physiologicalSignalRequest.ParticipantId, userId))
                {
                    return(BadRequest("A participant can create only own psychological signals"));
                }
            }
            else if (role == Role.TherapistRole)
            {
                var participant = await _coadaptService.Participant.GetParticipantByIdAsync(physiologicalSignalRequest.ParticipantId);

                if (!await ParticipantMonitoredByTherapistOfUserIdAsync(participant, userId))
                {
                    return(BadRequest("A therapist can create only psychological signals of monitored participants"));
                }
            }
            var physiologicalSignal = new PhysiologicalSignal();

            physiologicalSignal.FromRequest(physiologicalSignalRequest);
            _coadaptService.PhysiologicalSignal.CreatePhysiologicalSignal(physiologicalSignal);
            await _coadaptService.SaveAsync();

            return(CreatedAtRoute("PhysiologicalSignalById", new { id = physiologicalSignal.Id }, physiologicalSignal));
        }
Exemplo n.º 4
0
        public static PhysiologicalSignal ToPhysiologicalSignal(this PhysiologicalSignalMessage message, int participantId)
        {
            var signal = new PhysiologicalSignal {
                ParticipantId = participantId,
                Type          = message.Type,
                Value         = message.Value,
                Accuracy      = message.Accuracy,
                Timestamp     = new DateTime(1970, 1, 1, 0, 0, 0, 0)
            };

            signal.Timestamp = signal.Timestamp.AddMilliseconds(message.Timestamp);
            return(signal);
        }