Exemplo n.º 1
0
        private User GetUserByUsername(UserModel model, TimetableContext context)
        {
            var usernameToLower = model.Username.ToLower();
            var dbUser          = context.Users.FirstOrDefault(u => u.Username == usernameToLower);

            return(dbUser);
        }
Exemplo n.º 2
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env, TimetableContext context)
        {
            app.UseSwagger();
            app.UseSwaggerUI(c => {
                c.SwaggerEndpoint("/swagger/v1/swagger.json", "Commander API V1");
            });


            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                context.Database.EnsureDeleted();
                context.Database.Migrate();
            }

            app.UseHttpsRedirection();

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
Exemplo n.º 3
0
        public HttpResponseMessage CreateSubject(SubjectModel model,
                                                 [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            var responseMsg = this.PerformOperationAndHandleExceptions(() =>
            {
                var dbContext = new TimetableContext();
                using (dbContext)
                {
                    var user = this.GetUserByAccessToken(accessToken, dbContext);

                    var newSubject = new Subject
                    {
                        Owner   = user,
                        Name    = model.Name,
                        Color   = model.Color,
                        Teacher = model.Teacher
                    };

                    user.Subjects.Add(newSubject);
                    dbContext.SaveChanges();

                    var responseModel = new ResponseModel()
                    {
                        Id = newSubject.Id
                    };

                    var response = this.Request.CreateResponse(HttpStatusCode.OK, responseModel);
                    return(response);
                }
            });

            return(responseMsg);
        }
Exemplo n.º 4
0
        public HttpResponseMessage RegisterUser(UserModel model)
        {
            return(this.PerformOperationAndHandleExceptions(() =>
            {
                this.ValidateUser(model);

                var context = new TimetableContext();
                var dbUser = GetUserByUsername(model, context);
                if (dbUser != null)
                {
                    throw new InvalidOperationException("This user already exists in the database");
                }

                dbUser = new User()
                {
                    Username = model.Username,
                    AuthenticationCode = model.AuthCode
                };

                context.Users.Add(dbUser);
                context.SaveChanges();

                var responseModel = new RegisterUserResponseModel()
                {
                    Id = dbUser.Id,
                    Username = dbUser.Username,
                };

                var response = this.Request.CreateResponse(HttpStatusCode.Created, responseModel);
                return response;
            }));
        }
Exemplo n.º 5
0
        public async Task SeedAsync(TimetableContext context)
        {
            if (!context.Appointments.Any())
            {
                await context.Appointments.AddRangeAsync(GetAppointments());

                await context.SaveChangesAsync();
            }
        }
Exemplo n.º 6
0
        public HttpResponseMessage CreateLesson(LessonModel model,
                                                [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            var responseMsg = this.PerformOperationAndHandleExceptions(() =>
            {
                var dbContext = new TimetableContext();
                using (dbContext)
                {
                    var user            = this.GetUserByAccessToken(accessToken, dbContext);
                    var subject         = model.Subject;
                    var existingSubject = user.Subjects.FirstOrDefault(s => s.Name == subject);
                    var lesson          = new Lesson
                    {
                        Owner     = user,
                        Type      = model.Type,
                        Room      = model.Room,
                        Day       = model.Day,
                        DayNumber = LessonModel.CheckDay(model.Day),
                        Start     = model.StartTime,
                        End       = model.EndTime,
                        Note      = model.Note
                    };

                    user.Lessons.Add(lesson);
                    dbContext.SaveChanges();

                    if (existingSubject == null)
                    {
                        var newSubject = new Subject {
                            Name = subject, Owner = user
                        };
                        user.Subjects.Add(newSubject);
                        dbContext.SaveChanges();
                        lesson.Subject = newSubject;
                        newSubject.Lessons.Add(lesson);
                    }
                    else
                    {
                        lesson.Subject = existingSubject;
                        existingSubject.Lessons.Add(lesson);
                    }


                    dbContext.SaveChanges();

                    var responseModel = new ResponseModel
                    {
                        Id = lesson.Id
                    };

                    var response = this.Request.CreateResponse(HttpStatusCode.OK, responseModel);
                    return(response);
                }
            });

            return(responseMsg);
        }
        protected User GetUserByAccessToken(string accessToken, TimetableContext context)
        {
            var user = context.Users.FirstOrDefault(usr => usr.AccessToken == accessToken);

            if (user == null)
            {
                throw new InvalidOperationException("Invalid user credentials");
            }

            return(user);
        }
        public HttpResponseMessage CreateHomework(HomeworkModel model,
                                                  [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            var responseMsg = this.PerformOperationAndHandleExceptions(() =>
            {
                var dbContext = new TimetableContext();
                using (dbContext)
                {
                    var user            = this.GetUserByAccessToken(accessToken, dbContext);
                    var subject         = model.Subject;
                    var existingSubject = dbContext.Subjects.FirstOrDefault(s => s.Name == subject);

                    var homework = new Homework
                    {
                        Owner      = user,
                        IsDone     = model.IsDone,
                        SubmitDate = model.SubmitDate
                    };

                    user.Homeworks.Add(homework);
                    dbContext.SaveChanges();

                    if (existingSubject == null)
                    {
                        var newSubject = new Subject {
                            Name = subject, Owner = user
                        };
                        user.Subjects.Add(newSubject);
                        dbContext.SaveChanges();
                        homework.Subject = newSubject;
                        newSubject.Homeworks.Add(homework);
                    }
                    else
                    {
                        homework.Subject = existingSubject;
                        existingSubject.Homeworks.Add(homework);
                    }


                    dbContext.SaveChanges();

                    var responseModel = new ResponseModel()
                    {
                        Id = homework.Id
                    };

                    var response = this.Request.CreateResponse(HttpStatusCode.OK, responseModel);
                    return(response);
                }
            });

            return(responseMsg);
        }
Exemplo n.º 9
0
        public HttpResponseMessage LogoutUser
            ([ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            return(this.PerformOperationAndHandleExceptions(() =>
            {
                var context = new TimetableContext();
                var user = this.GetUserByAccessToken(accessToken, context);
                user.AccessToken = null;
                context.SaveChanges();

                var response = this.Request.CreateResponse(HttpStatusCode.NoContent);
                return response;
            }));
        }
Exemplo n.º 10
0
        public SubjectModel GetSubjectById(int id,
                                           [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            return(this.PerformOperationAndHandleExceptions(() =>
            {
                var dbContext = new TimetableContext();
                var user = this.GetUserByAccessToken(accessToken, dbContext);
                var subject = user.Subjects.FirstOrDefault(l => l.Id == id);

                var models = SubjectModel.Parse(subject);

                return models;
            }));
        }
Exemplo n.º 11
0
        public IEnumerable <SubjectModel> GetAllSubjects(
            [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            return(this.PerformOperationAndHandleExceptions(() =>
            {
                var dbContext = new TimetableContext();
                var user = this.GetUserByAccessToken(accessToken, dbContext);
                var subjects = user.Subjects;

                var models = SubjectModel.ParseModels(subjects);

                return models.OrderBy(s => s.Name);
            }));
        }
        public IEnumerable <HomeworkModel> GetAll(
            [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            return(this.PerformOperationAndHandleExceptions(() =>
            {
                var dbContext = new TimetableContext();
                var user = this.GetUserByAccessToken(accessToken, dbContext);
                var homeworks = user.Homeworks.Where(h => h.SubmitDate >= DateTime.Today).ToList();

                var models = HomeworkModel.ParseModels(homeworks);

                return models.OrderBy(m => m.SubmitDate);
            }));
        }
Exemplo n.º 13
0
        public IEnumerable <LessonModel> GetLessonsPerDay(string currentDay,
                                                          [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            return(this.PerformOperationAndHandleExceptions(() =>
            {
                var dbContext = new TimetableContext();
                var user = this.GetUserByAccessToken(accessToken, dbContext);
                var lessons = user.Lessons;

                var models = LessonModel.ParseModels(lessons);

                var selectedLessons = models.Where(m => m.Day == currentDay).OrderBy(o => o.StartTime);
                return selectedLessons;
            }));
        }
        public HttpResponseMessage MarkAsDone(int id,
                                              [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            return(this.PerformOperationAndHandleExceptions(() =>
            {
                var dbContext = new TimetableContext();
                var user = this.GetUserByAccessToken(accessToken, dbContext);

                var homework = user.Homeworks.FirstOrDefault(h => h.Id == id);

                homework.IsDone = (homework.IsDone) ? false : true;
                dbContext.SaveChanges();

                var response = this.Request.CreateResponse(HttpStatusCode.Created);
                return response;
            }));
        }
Exemplo n.º 15
0
        public IEnumerable <LessonModel> GetLessonsPerWeek(
            [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            return(this.PerformOperationAndHandleExceptions(() =>
            {
                var dbContext = new TimetableContext();
                var user = this.GetUserByAccessToken(accessToken, dbContext);
                var lessons = user.Lessons;

                var models = LessonModel.ParseModels(lessons);

                var selectedLessons = models.Where(l => l.Day != "Saturday" && l.Day != "Sunday")
                                      .OrderBy(l => l.DayNumber)
                                      .ThenBy(l => l.StartTime);
                return selectedLessons;
            }));
        }
        public HttpResponseMessage DeleteHomewrok(int id,
                                                  [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            var responseMsg = this.PerformOperationAndHandleExceptions(() =>
            {
                var dbContext = new TimetableContext();
                using (dbContext)
                {
                    var user             = this.GetUserByAccessToken(accessToken, dbContext);
                    var existingHomework = user.Homeworks.FirstOrDefault(l => l.Id == id);
                    user.Homeworks.Remove(existingHomework);
                    dbContext.SaveChanges();

                    var response = this.Request.CreateResponse(HttpStatusCode.OK);
                    return(response);
                }
            });

            return(responseMsg);
        }
Exemplo n.º 17
0
        public HttpResponseMessage LoginUser(UserModel model)
        {
            return(this.PerformOperationAndHandleExceptions(() =>
            {
                if (model == null)
                {
                    throw new FormatException("Invalid username and/or password");
                }

                this.ValidateAuthCode(model.AuthCode);
                this.ValidateUsername(model.Username);

                var context = new TimetableContext();
                var authCode = model.AuthCode;
                var user = context.Users.FirstOrDefault(u => u.AuthenticationCode == authCode);

                if (user == null)
                {
                    throw new InvalidOperationException("Invalid username or password");
                }

                if (user.AccessToken == null)
                {
                    user.AccessToken = this.GenerateAccessToken(user.Id);
                    context.SaveChanges();
                }

                var responseModel = new LoginResponseModel()
                {
                    Id = user.Id,
                    Username = user.Username,
                    AccessToken = user.AccessToken
                };

                var response = this.Request.CreateResponse(HttpStatusCode.OK, responseModel);
                return response;
            }));
        }
Exemplo n.º 18
0
        public HttpResponseMessage EditSubject(SubjectModel model, int id,
                                               [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            var responseMsg = this.PerformOperationAndHandleExceptions(() =>
            {
                var dbContext = new TimetableContext();
                using (dbContext)
                {
                    var user    = this.GetUserByAccessToken(accessToken, dbContext);
                    var subject = user.Subjects.FirstOrDefault(s => s.Id == id);

                    subject.Name    = model.Name;
                    subject.Teacher = model.Teacher;
                    subject.Color   = model.Color;

                    dbContext.SaveChanges();

                    var response = this.Request.CreateResponse(HttpStatusCode.OK);
                    return(response);
                }
            });

            return(responseMsg);
        }
Exemplo n.º 19
0
        public HttpResponseMessage DeleteSubject(int id,
                                                 [ValueProvider(typeof(HeaderValueProviderFactory <string>))] string accessToken)
        {
            var responseMsg = this.PerformOperationAndHandleExceptions(
                () =>
            {
                var dbContext = new TimetableContext();
                using (dbContext)
                {
                    var user            = this.GetUserByAccessToken(accessToken, dbContext);
                    var existingSubject = user.Subjects.FirstOrDefault(l => l.Id == id);

                    var homeworksForSubject = user.Homeworks.Where(h => h.Subject.Id == existingSubject.Id);

                    foreach (var homework in homeworksForSubject)
                    {
                        user.Homeworks.Remove(homework);
                    }

                    var lessonsForSubject = user.Lessons.Where(h => h.Subject.Id == existingSubject.Id);

                    foreach (var lesson in lessonsForSubject)
                    {
                        user.Lessons.Remove(lesson);
                    }

                    user.Subjects.Remove(existingSubject);
                    dbContext.SaveChanges();

                    var response = this.Request.CreateResponse(HttpStatusCode.OK);
                    return(response);
                }
            });

            return(responseMsg);
        }
Exemplo n.º 20
0
 public SubjectController(TimetableContext context)
 {
     _context = context;
 }
Exemplo n.º 21
0
 public SqlTimetableRepo(TimetableContext context)
 {
     _context = context;
 }
Exemplo n.º 22
0
 public AppointmentController(TimetableContext context)
 {
     _context = context ?? throw new ArgumentNullException(nameof(context));
 }
Exemplo n.º 23
0
 public CabinetController(TimetableContext context)
 {
     _context = context;
 }
Exemplo n.º 24
0
 public TeacherController(TimetableContext context)
 {
     _context = context;
 }
Exemplo n.º 25
0
 public SpecialtyController(TimetableContext context)
 {
     _context = context;
 }