示例#1
0
        public bool Upsert(BonusEnum.UpsertType upsertType = BonusEnum.UpsertType.Upsert)
        {
            bool success = false;

            try
            {
                using (var dc = new ArmsContext())
                {
                    var sqlEntry = dc.Supervisors.FirstOrDefault(x => x.SupervisorID == this.SupervisorID);

                    // Insert the new supervisor to the DB
                    if (sqlEntry == null && (upsertType == BonusEnum.UpsertType.Upsert || upsertType == BonusEnum.UpsertType.Insert))
                    {
                        dc.Supervisors.Add(this);
                    }

                    // Updates existing supervisor
                    if (sqlEntry != null && (upsertType == BonusEnum.UpsertType.Upsert || upsertType == BonusEnum.UpsertType.Update))
                    {
                        sqlEntry.UserID   = this.UserID;
                        sqlEntry.CourseID = this.CourseID;
                    }

                    dc.SaveChanges();
                }
                success = true;
            }
            catch (Exception ex)
            {
                var catchMsg = ex.Message;
            }
            return(success);
        }
示例#2
0
文件: Attendee.cs 项目: alex-asd/Arms
        public bool Upsert(BonusEnum.UpsertType upsertType = BonusEnum.UpsertType.Upsert)
        {
            bool success = false;

            try
            {
                using (var dc = new ArmsContext())
                {
                    var sqlEntry = dc.Attendees.FirstOrDefault(x => x.AttendeeID == this.AttendeeID);

                    // Insert new attendee to DB
                    if (sqlEntry == null && (upsertType == BonusEnum.UpsertType.Upsert || upsertType == BonusEnum.UpsertType.Insert))
                    {
                        dc.Attendees.Add(this);
                    }

                    // Update existing entry
                    if (sqlEntry != null && (upsertType == BonusEnum.UpsertType.Upsert || upsertType == BonusEnum.UpsertType.Update))
                    {
                        sqlEntry.LectureID = this.LectureID;
                        sqlEntry.UserID    = this.UserID;
                    }
                    dc.SaveChanges();
                }
                success = true;
            }
            catch (Exception ex)
            {
                var catchMsg = ex.Message;
            }
            return(success);
        }
示例#3
0
        // getting the actual course from db
        private static Course Get(int courseId = 0, string courseName = null)
        {
            Course model = null;

            try
            {
                using (var dc = new ArmsContext())
                {
                    // User id if given
                    if (courseId > 0)
                    {
                        model = dc.Courses.Include(x => x.Creator).FirstOrDefault(x => x.CourseID == courseId);
                    }
                    else if (courseName != null)
                    {
                        model = dc.Courses.Include(x => x.Creator).FirstOrDefault(x => x.CourseName == courseName);
                    }
                }
            }
            catch (Exception ex)
            {
                ex.ToString();
            }
            return(model);
        }
示例#4
0
        // return true/false depending if the current user is a participant of the course
        public static string GetStudentStatusForCourse(int userId, int courseId)
        {
            var type = "";

            try
            {
                using (var dc = new ArmsContext())
                {
                    if (dc.Participants.Any(p => p.UserID == userId && p.CourseID == courseId && p.ParticipantStatus == Participant.STATUS_ACTIVE))
                    {
                        type = Participant.STATUS_ACTIVE;
                    }
                    else if (dc.Participants.Any(p => p.UserID == userId && p.CourseID == courseId && p.ParticipantStatus == Participant.STATUS_PENDING))
                    {
                        type = Participant.STATUS_PENDING;
                    }
                    else
                    {
                        type = "not";
                    }
                }
            }
            catch (Exception ex)
            {
                var catchMsg = ex.Message;
            }
            return(type);
        }
示例#5
0
 // for testing purposes
 public static List <Attendee> GetAllAttendees()
 {
     using (var dc = new ArmsContext())
     {
         var list = dc.Attendees.Include(x => x.User).Include(x => x.Lecture).ToList();
         return(list);
     }
 }
示例#6
0
 // for testing purposes
 public static List <User> GetAllUsers()
 {
     using (var dc = new ArmsContext())
     {
         var list = dc.Users.ToList();
         return(list);
     }
 }
示例#7
0
 // for testing purposes
 public static List <Course> GetAllCourses()
 {
     using (var dc = new ArmsContext())
     {
         var list = dc.Courses.Include(x => x.Creator).ToList();
         return(list);
     }
 }
示例#8
0
 // for testing purposes
 public static List <Lecture> GetAllLectures()
 {
     using (var dc = new ArmsContext())
     {
         var list = dc.Lectures.Include(x => x.Course).ToList();
         return(list);
     }
 }
示例#9
0
 // for testing purposes
 public static List <Supervisor> GetAllTeachers()
 {
     using (var dc = new ArmsContext())
     {
         var list = dc.Supervisors.ToList();
         return(list);
     }
 }
示例#10
0
 public IHttpActionResult GetById(int id)
 {
     using (var dc = new ArmsContext())
     {
         dc.Configuration.LazyLoadingEnabled = false;
         return(Ok <Lecture>(dc.Lectures.FirstOrDefault(x => x.LectureID == id)));
     }
 }
示例#11
0
 // for testing purposes
 public static List <Participant> GetAllParticipants()
 {
     using (var dc = new ArmsContext())
     {
         var list = dc.Participants.Include(x => x.User).Include(x => x.Course).ToList();
         return(list);
     }
 }
示例#12
0
 public IHttpActionResult GetById(int id)
 {
     using (var dc = new ArmsContext())
     {
         dc.Configuration.LazyLoadingEnabled = false;
         var results = dc.Participants.Include(x => x.User).Where(x => x.CourseID == id);
         return(Ok(results.ToList()));
     }
 }
示例#13
0
 public IHttpActionResult DeclineParticipant([FromBody] Participant participant)
 {
     using (var dc = new ArmsContext())
     {
         var db_part = dc.Participants.FirstOrDefault(x => x.ParticipantID == participant.ParticipantID);
         db_part.ParticipantStatus = "active";
         db_part.Delete();
         return(Ok(new ApiCallbackMessage("Success", true)));
     }
 }
示例#14
0
        protected override void Dispose(bool disposing)
        {
            ArmsContext db = new ArmsContext();

            if (disposing)
            {
                db.Dispose();
            }
            base.Dispose(disposing);
        }
示例#15
0
 public IHttpActionResult AcceptParticipant([FromBody] Participant participant)
 {
     using (var dc = new ArmsContext())
     {
         //todo: add check if exists
         var db_part = dc.Participants.FirstOrDefault(x => x.ParticipantID == participant.ParticipantID);
         db_part.ParticipantStatus = "active";
         db_part.Update();
         return(Ok(new ApiCallbackMessage("Success", true)));
     }
 }
示例#16
0
        public IHttpActionResult GetForCourse(int id)
        {
            var course = CourseHelper.GetById(id);

            using (var dc = new ArmsContext())
            {
                dc.Configuration.LazyLoadingEnabled = false;
                var lectures = dc.Lectures.Include(x => x.Course).Where(x => x.CourseID == course.CourseID);
                return(Ok(lectures.ToList()));
            }
        }
示例#17
0
        public IHttpActionResult ApplyParticipant(int course_id)
        {
            var user_id = APIUtils.GetUserFromClaim(ClaimsPrincipal.Current);

            using (var dc = new ArmsContext())
            {
                //TODO: Add check if exists
                Participant part = new Participant(user_id, course_id, "pending");
                part.Insert();
                return(Ok(new ApiCallbackMessage("Success", true)));
            }
        }
示例#18
0
        public IHttpActionResult GetByName(string name)
        {
            List <Course> resultCourses = null;

            using (var dc = new ArmsContext())
            {
                var searchCourses = dc.Courses.Include(m => m.Creator)
                                    .Where(course => course.CourseName.ToLower().Contains(name.ToLower()));
                resultCourses = searchCourses.ToList();
                return(Ok(resultCourses));
            }
        }
示例#19
0
        public IHttpActionResult AddSupervisorToCourse([FromBody] Course courseToAddTo, [FromBody] User userToAdd)
        {
            if (!APIUtils.CanChangeCourse(courseToAddTo.CourseID, ClaimsPrincipal.Current))
            {
                return(Unauthorized());
            }

            using (var dc = new ArmsContext())
            {
                dc.Supervisors.Add(new Supervisor(userToAdd.UserID, courseToAddTo.CourseID));
                dc.SaveChanges();
                return(Ok(new ApiCallbackMessage("Success", true)));
            }
        }
示例#20
0
        public IHttpActionResult GetForStudent(int id)
        {
            var curr_user = UserHelper.GetById(id);

            using (var dc = new ArmsContext())
            {
                dc.Configuration.LazyLoadingEnabled = false;
                var participations = dc.Participants
                                     .Where(x => x.UserID == curr_user.UserID && x.ParticipantStatus == "active")
                                     .Select(x => x.CourseID).ToList();
                var courses_lectures = dc.Lectures.Include(x => x.Course).Where(x =>
                                                                                participations.Contains(x.CourseID) && x.To.CompareTo(DateTime.Now) >= 0);
                return(Ok <List <Lecture> >(courses_lectures.ToList()));
            }
        }
示例#21
0
        public IHttpActionResult GetActiveLectureForTeacher()
        {
            var curr_user = UserHelper.GetById(APIUtils.GetUserFromClaim(ClaimsPrincipal.Current));

            using (var dc = new ArmsContext())
            {
                dc.Configuration.LazyLoadingEnabled = false;
                var supervisions = dc.Supervisors.Where(x => x.UserID == curr_user.UserID)
                                   .Select(x => x.CourseID).ToList();
                var active_lectures = dc.Lectures.Include(x => x.Course).FirstOrDefault(x =>
                                                                                        supervisions.Contains(x.CourseID) && x.To.CompareTo(DateTime.Now) >= 0 &&
                                                                                        x.From.CompareTo(DateTime.Now) <= 0);
                return(Ok <Lecture>(active_lectures));
            }
        }
示例#22
0
        public IHttpActionResult UserAttendedLecture(int lecture_id, string bluetooth_address)
        {
            var user_id = APIUtils.GetUserFromClaim(ClaimsPrincipal.Current);

            using (var dc = new ArmsContext())
            {
                dc.Configuration.LazyLoadingEnabled = false;
                var attendance = dc.Attendees.Where(x => x.LectureID == lecture_id && x.UserID == user_id).Count();
                if (attendance == 1)
                {
                    return(Ok(new ApiCallbackMessage("Success", true)));
                }

                return(NotFound());
            }
        }
示例#23
0
 // get all participants for course
 public static List <Participant> GetParticipantsForCourse(int courseId)
 {
     try
     {
         using (var dc = new ArmsContext())
         {
             var list = dc.Participants.Where(x => x.CourseID == courseId).ToList();
             return(list);
         }
     }
     catch (Exception ex)
     {
         var msg = ex.Message;
     }
     return(null);
 }
示例#24
0
        // get all supervisors (users) for the specified course
        public static List <User> GetSupervisorsForCourse(int courseId)
        {
            var users = new List <User>();

            try
            {
                using (var dc = new ArmsContext())
                {
                    users = dc.Supervisors.Where(s => s.CourseID == courseId).Select(s => s.User).ToList();
                }
            }
            catch (Exception ex)
            {
                var catchMsg = ex.Message;
            }
            return(users);
        }
示例#25
0
        // checks if the given id is matching a supervisors for the course specified
        public static bool IsUserSupervisor(int userId, int courseId)
        {
            var isSupervisor = false;

            try
            {
                using (var dc = new ArmsContext())
                {
                    isSupervisor = dc.Supervisors.Where(s => s.CourseID == courseId).Any(x => x.UserID == userId);
                }
            }
            catch (Exception ex)
            {
                var catchMsg = ex.Message;
            }
            return(isSupervisor);
        }
示例#26
0
        // returns whether there is a User with such email in the DB
        public static bool IsRegistered(string email)
        {
            bool isReg = false;

            try
            {
                using (var dc = new ArmsContext())
                {
                    isReg = !dc.Users.Any(u => u.Email == email);
                }
            }
            catch (Exception ex)
            {
                var catchMsg = ex.Message;
            }
            return(isReg);
        }
示例#27
0
        // returns whether there is a Course with such courseName in the DB
        public static bool Exists(string courseName)
        {
            var exists = false;

            try
            {
                using (var dc = new ArmsContext())
                {
                    exists = dc.Courses.Any(u => u.CourseName == courseName);
                }
            }
            catch (Exception ex)
            {
                var catchMsg = ex.Message;
            }
            return(exists);
        }
示例#28
0
        // get students (users) pending for a specified course
        public static List <User> GetPendingParticipantsForCourse(int courseId)
        {
            var list = new List <User>();

            try
            {
                using (var dc = new ArmsContext())
                {
                    list = dc.Participants.Where(ps => ps.CourseID == courseId && ps.ParticipantStatus == Participant.STATUS_PENDING).Select(ps => ps.User).ToList();
                }
            }
            catch (Exception ex)
            {
                var catchMsg = ex.Message;
            }
            return(list);
        }
示例#29
0
        // get Attendee by id
        public static Attendee GetById(int attendeeId)
        {
            Attendee model = null;

            try
            {
                using (var dc = new ArmsContext())
                {
                    model = dc.Attendees.Include(x => x.User).Include(x => x.Lecture).FirstOrDefault(x => x.AttendeeID == attendeeId);
                }
            }
            catch (Exception ex)
            {
                ex.ToString();
            }
            return(model);
        }
示例#30
0
        // get lecture by id
        public static Participant GetById(int userId, int courseId)
        {
            Participant model = null;

            try
            {
                using (var dc = new ArmsContext())
                {
                    model = dc.Participants.Include(x => x.User).Include(x => x.Course).FirstOrDefault(x => x.UserID == userId && x.CourseID == courseId);
                }
            }
            catch (Exception ex)
            {
                ex.ToString();
            }
            return(model);
        }