예제 #1
0
        public async Task <object> CreateStudy([FromBody] StudyData data)
        {
            var participation = user.ProtocolUsers.FirstOrDefault(x => x.Protocol.Id.Equals(data.ProtocolId));

            if (participation == null)
            {
                return(Unauthorized("You don't have access to this protocol."));
            }
            var subject = participation.Protocol.Subjects.FirstOrDefault(x => x.Id.Equals(data.SubjectId));

            if (subject == null)
            {
                return(NotFound("The subject ID you provide is not found."));
            }

            Study study = new Study
            {
                Id          = Guid.NewGuid(),
                Filename    = data.Filename,
                Name        = data.Name,
                Condition   = data.Condition,
                DateOfStudy = data.DateOfStudy,
                IChannel    = data.IChannel,
                IHeadModel  = data.IHeadModel,
                Subject     = subject,
                LastUpdate  = System.DateTime.Now,
                Protocol    = protocol
            };

            context.Studies.Add(study);
            history.HistoryEvent += $"create study {study.Id}";
            await context.SaveChangesAsync();

            return(new Uploadinfo
            {
                Uploadid = FileController.createStudyQueueItem(study, session, data.Md5).ToString(),
                Fid = study.Id.ToString()
            });
        }
예제 #2
0
        public async Task <object> createHeadModel([FromBody] HeadModelData data)
        {
            var study = protocol.Studies.FirstOrDefault(x => x.Id == data.StudyID);
            var obj   = new HeadModel(data)
            {
                Study = study
            };

            //set parent url
            obj.Parent.Url = mapUrl(protocol.Id.ToString(), study.Id.ToString(), obj.Parent.Id.ToString(), "data");

            context.HeadModels.Add(obj);
            context.FunctionalFiles.Add(obj.Parent);
            history.HistoryEvent += $"create {obj.GetType().Name} {study.Id} {obj.Id}";
            await context.SaveChangesAsync();

            return(new Uploadinfo
            {
                Uploadid = FileController.createFunctionalFileQueueItem(obj, session, data.Md5, data.FileName).ToString(),
                Fid = obj.Parent.Id.ToString()
            });
        }
예제 #3
0
        public async Task <object> createChannel([FromBody] ChannelData data)
        {
            //create channel data
            var study   = protocol.Studies.FirstOrDefault(x => x.Id == data.StudyID);
            var channel = new Channel(data)
            {
                Study = study
            };

            //set parent url
            channel.Parent.Url = mapUrl(protocol.Id.ToString(), study.Id.ToString(), channel.Parent.Id.ToString(), "data");

            //add channel and ff to database
            context.Channels.Add(channel);
            context.FunctionalFiles.Add(channel.Parent);
            history.HistoryEvent += $"create Channel {study.Id} {channel.Id}";
            await context.SaveChangesAsync();

            return(new Uploadinfo
            {
                Uploadid = FileController.createFunctionalFileQueueItem(channel, session, data.Md5, data.FileName).ToString(),
                Fid = channel.Parent.Id.ToString()
            });
        }
        public async Task <object> CreateSubject([FromBody] SubjectData data)
        {
            var participation = user.ProtocolUsers.FirstOrDefault(x => x.Protocol.Id.Equals(data.ProtocolId));

            if (participation == null)
            {
                return(NotFound("You don't have access to this protocol."));
            }
            Subject subject = new Subject
            {
                Id                = Guid.NewGuid(),
                Comment           = data.Comment,
                Filename          = data.Filename,
                Name              = data.Name,
                UseDefaultAnat    = data.UseDefaultAnat,
                UseDefaultChannel = data.UseDefaultChannel,
                IAnatomy          = data.IAnatomy,
                IScalp            = data.IScalp,
                ICortex           = data.ICortex,
                IInnerSkull       = data.IInnerSkull,
                IOuterSkull       = data.IOuterSkull,
                IOther            = data.IOther,
                Protocol          = participation.Protocol,
                LastUpdate        = System.DateTime.Now
            };

            context.Subjects.Add(subject);
            history.HistoryEvent += $"create Subject {subject.Id}";
            await context.SaveChangesAsync();

            return(new Uploadinfo
            {
                Uploadid = FileController.createSubjectQueueItem(subject, session, data.Md5).ToString(),
                Fid = subject.Id.ToString()
            });
        }