public MarkDTOOut CreateMarkAdmin(string userId, MarkDTOIn newMark) { logger.Info($"Getting student {newMark.StudentID} over student service, from Create mark teacher, mark service"); Student student = studentsService.GetStudent(newMark.StudentID); logger.Info($"Getting subject {newMark.SubjectID} over subject service, from create mark teacher, mark service"); Subject subject = subjectsService.GetSubjectByID(newMark.SubjectID); logger.Info($"Getting teach for student {student.UserName}, subject {subject.SubjectName} and teacher with Id {userId}"); Teach teach = subject.Teaches.Where(x => x.StudentDepartments.Id == student.StudentDepartments.Id && x.Teachers.Id == newMark.TeacherID && x.Subject.Id == subject.Id).FirstOrDefault(); if (teach == null) { logger.Info($"Teacher with id {userId} tried to enter the mark to wrong student or subject"); throw new TeacherDontTeachThisSubjectException("Wrong teacher or subject"); } if (newMark.MarkValue < 1 || newMark.MarkValue > 5) { logger.Info($"Teacher with id {userId} tried to enter the mark out of boundaries"); throw new BadRequestException("Mark van be only 1,2,3,4,5"); } logger.Info("Preparing mark for storing in db"); Mark mark = new Mark() { MarkValue = newMark.MarkValue, Teaches = teach }; logger.Info($"Storing mark {mark.Id} in mark repo"); db.MarksRepository.Insert(mark); logger.Info($"Saving marl with id {mark.Id} in db"); db.Save(); logger.Info($"Converting mark with id {mark.Id} to DTO"); MarkDTOOut markDTO = new MarkDTOOut() { Mark = new MarkDTODate() { Id = mark.Id, MarkValue = mark.MarkValue, InsertDate = mark.InsertDate }, Student = Utilities.ConverterDTO.SimpleDTOConverter <StudentDTO>(mark.Teaches.StudentDepartments.Students), Subject = Utilities.ConverterDTO.SimpleDTOConverter <SubjectDTO>(mark.Teaches.Subject), Teacher = Utilities.ConverterDTO.SimpleDTOConverter <TeacherDTO>(mark.Teaches.Teachers) }; return(markDTO); }
public IHttpActionResult PostMark(MarkDTOIn newMark) { //bool isAdmin = RequestContext.Principal.IsInRole("admins"); //bool isTeacher = RequestContext.Principal.IsInRole("teachers"); //bool isAuthenticated = RequestContext.Principal.Identity.IsAuthenticated; string role = ((ClaimsPrincipal)RequestContext.Principal).FindFirst(x => x.Type == ClaimTypes.Role).Value; string userId = ((ClaimsPrincipal)RequestContext.Principal).FindFirst(x => x.Type == "UserId").Value; if (role == "admins") { MarkDTOOut markAdmin = marksService.CreateMarkAdmin(userId, newMark); return(Created("", markAdmin)); } MarkDTOOut mark = marksService.CreateMarkTeacher(userId, newMark); return(Created("", mark)); }
public MarkDTOOut CreateMarkTeacher(string userId, MarkDTOIn newMark) { logger.Info($"Getting student {newMark.StudentID} over student service, from Create mark teacher, mark service"); Student student = studentsService.GetStudent(newMark.StudentID); logger.Info($"Getting subject {newMark.SubjectID} over subject service, from create mark teacher, mark service"); Subject subject = subjectsService.GetSubjectByID(newMark.SubjectID); logger.Info($"Getting teach for student {student.UserName}, subject {subject.SubjectName} and teacher with Id {userId}"); Teach teach = subject.Teaches.Where(x => x.StudentDepartments.Id == student.StudentDepartments.Id && x.Teachers.Id == userId && x.Subject.Id == subject.Id).FirstOrDefault(); if (teach == null) { logger.Info($"Teacher with id {userId} tried to enter the mark to wrong student or subject"); throw new TeacherDontTeachThisSubjectException("Wrong student or subject"); } if (newMark.MarkValue < 1 || newMark.MarkValue > 5) { logger.Info($"Teacher with id {userId} tried to enter the mark out of boundaries"); throw new BadRequestException("Mark van be only 1,2,3,4,5"); } logger.Info("Preparing mark for storing in db"); Mark mark = new Mark() { MarkValue = newMark.MarkValue, Teaches = teach }; logger.Info($"Storing mark {mark.Id} in mark repo"); db.MarksRepository.Insert(mark); logger.Info($"Saving marl with id {mark.Id} in db"); db.Save(); logger.Info($"Preparing student's {student.UserName} parent's for mail sending"); IEnumerable <ParentDTOOut> parents = mark.Teaches.StudentDepartments.Students.Parents.Select(x => new ParentDTOOut() { Id = x.Id, FirstName = x.FirstName, LastName = x.LastName, Email = x.Email, UserName = x.UserName }); logger.Info($"Converting mark with id {mark.Id} to DTO"); MarkDTOOut markDTO = new MarkDTOOut() { Mark = new MarkDTODate() { Id = mark.Id, MarkValue = mark.MarkValue, InsertDate = mark.InsertDate }, Student = Utilities.ConverterDTO.SimpleDTOConverter <StudentDTO>(mark.Teaches.StudentDepartments.Students), Subject = Utilities.ConverterDTO.SimpleDTOConverter <SubjectDTO>(mark.Teaches.Subject), Teacher = Utilities.ConverterDTO.SimpleDTOConverter <TeacherDTO>(mark.Teaches.Teachers) }; foreach (var parent in parents) { try { logger.Info($"Sending parent {parent.UserName} to mail service"); emailService.SendEmail(parent, markDTO); } catch (Exception) { logger.Info($"Something went wrong with email sending to {parent.Email}"); continue; } } return(markDTO); }