Exemple #1
0
        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));
        }
Exemple #3
0
        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);
        }