private User GetUserByUsername(UserModel model, TimetableContext context) { var usernameToLower = model.Username.ToLower(); var dbUser = context.Users.FirstOrDefault(u => u.Username == usernameToLower); return(dbUser); }
// 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(); }); }
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); }
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; })); }
public async Task SeedAsync(TimetableContext context) { if (!context.Appointments.Any()) { await context.Appointments.AddRangeAsync(GetAppointments()); await context.SaveChangesAsync(); } }
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); }
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; })); }
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; })); }
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); })); }
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; })); }
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); }
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; })); }
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); }
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); }
public SubjectController(TimetableContext context) { _context = context; }
public SqlTimetableRepo(TimetableContext context) { _context = context; }
public AppointmentController(TimetableContext context) { _context = context ?? throw new ArgumentNullException(nameof(context)); }
public CabinetController(TimetableContext context) { _context = context; }
public TeacherController(TimetableContext context) { _context = context; }
public SpecialtyController(TimetableContext context) { _context = context; }