Ejemplo n.º 1
0
        public HttpResponseMessage StoppedWorkingAndEndedAllEngagementsInTSAndFTSByTeacherId(string id)
        {
            string userId = ((ClaimsPrincipal)RequestContext.Principal).FindFirst(x => x.Type == "UserId").Value;

            logger.Info("UserId: " + userId + ": Requesting IsStillWorking Update to False For Teacher with Id: " + id + " and" +
                        " updating All engagements in TeacherToSubject and FormToTeacherSubject Tables.");

            try
            {
                TeacherDTOForAdmin saved = teachersService.StoppedWorkingAndEndedAllEngagementsInTSAndFTSByTeacherId(id);

                if (saved == null)
                {
                    logger.Info("The Teacher with id: " + id + " was not found.");
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "The Teacher with id: " + id + " was not found."));
                }

                logger.Info("Success!");
                return(Request.CreateResponse(HttpStatusCode.OK, saved));
            }
            catch (Exception e)
            {
                logger.Error(e);
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, e));
            }
        }
Ejemplo n.º 2
0
        public async Task <HttpResponseMessage> PutTeacher(string id, [FromBody] PutTeacherDTO updated)
        {
            string userId = ((ClaimsPrincipal)RequestContext.Principal).FindFirst(x => x.Type == "UserId").Value;

            logger.Info("UserId: " + userId + ": Requesting Update for Teacher Id: " + id);

            if (updated.Id != id)
            {
                logger.Error("Updated Teacher id " + updated.Id + " doesn't match the id " + id + " from the request (route).");
                return(Request.CreateResponse(HttpStatusCode.BadRequest, "Updated " +
                                              "Teacher id " + updated.Id + " doesn't match the id " + id + " from the request (route)."));
            }

            try
            {
                TeacherDTOForAdmin saved = await teachersService.Update(id, updated);

                if (saved == null)
                {
                    logger.Info("Failed!");
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "Failed! Something went wrong."));
                }

                logger.Info("Success!");
                return(Request.CreateResponse(HttpStatusCode.OK, saved));
            }
            catch (Exception e)
            {
                logger.Error(e);
                return(Request.CreateResponse(HttpStatusCode.BadRequest, e));
            }
        }
Ejemplo n.º 3
0
        public TeacherDTOForAdmin ConvertToTeacherDTOForAdmin(Teacher x, IList <IdentityUserRole> roles)
        {
            IList <string> rolesIds = new List <string>();

            foreach (var role in roles)
            {
                rolesIds.Add(role.RoleId);
            }
            TeacherDTOForAdmin dto = new TeacherDTOForAdmin
            {
                Id                   = x.Id,
                Roles                = rolesIds,
                UserName             = x.UserName,
                FirstName            = x.FirstName,
                LastName             = x.LastName,
                Email                = x.Email,
                EmailConfirmed       = x.EmailConfirmed,
                PhoneNumber          = x.PhoneNumber,
                PhoneNumberConfirmed = x.PhoneNumberConfirmed,
                Jmbg                 = x.Jmbg,
                Gender               = x.Gender,
                IsStillWorking       = x.IsStillWorking
            };

            return(dto);
        }
Ejemplo n.º 4
0
        public TeacherDTOForAdmin StoppedWorkingAndEndedAllEngagementsInTSAndFTSByTeacherId(string id)
        {
            Teacher user = db.TeachersRepository.GetByID(id);

            if (user == null)
            {
                throw new HttpException("The teacher with id: " + id + " was not found.");
            }

            if (user.FormAttending != null)
            {
                throw new HttpException("The teacher id: " + id + " is assigned to the form " +
                                        "with id: " + user.FormAttending.Id + ". To archive this teacher, first you need to " +
                                        "assign a new Attending Teacher to that Form with HttpPut and route: " +
                                        "http://localhost:54164/project/forms/" + user.FormAttending.Id + "/attending-teacher/{newAttendingTeacherId} ");
            }

            IEnumerable <TeacherToSubject> teacherToSubjectByTeacherId = user.TeachersSubjects;

            if (teacherToSubjectByTeacherId != null)
            {
                foreach (var ts in teacherToSubjectByTeacherId)
                {
                    if (ts.StoppedTeaching == null || ts.StoppedTeaching > DateTime.UtcNow)
                    {
                        ts.StoppedTeaching = DateTime.UtcNow;
                        db.TeachersToSubjectsRepository.Update(ts);
                    }

                    IEnumerable <FormToTeacherSubject> ftsBytsId = ts.TeacherSubjectForms;
                    if (ftsBytsId != null)
                    {
                        foreach (var fts in ftsBytsId)
                        {
                            if (fts.Stopped == null)
                            {
                                fts.Stopped = DateTime.UtcNow;
                                db.FormsToTeacherSubjectsRepository.Update(fts);
                            }
                        }
                    }
                }
            }

            user.IsStillWorking = false;
            db.TeachersRepository.Update(user);
            db.Save();

            TeacherDTOForAdmin updatedDTO = new TeacherDTOForAdmin();

            updatedDTO = toDTO.ConvertToTeacherDTOForAdmin(user, (List <IdentityUserRole>)user.Roles);

            return(updatedDTO);
        }
Ejemplo n.º 5
0
        public IList <TeacherDTOForAdmin> ConvertToTeacherDTOListForAdmin(List <Teacher> teachers)
        {
            IList <TeacherDTOForAdmin> dtos = new List <TeacherDTOForAdmin>();

            foreach (var teacher in teachers)
            {
                TeacherDTOForAdmin dto = ConvertToTeacherDTOForAdmin(teacher, (IList <IdentityUserRole>)teacher.Roles);
                dtos.Add(dto);
            }
            return(dtos);
        }
Ejemplo n.º 6
0
        public HttpResponseMessage GetTeacherById(string id)
        {
            string userId   = ((ClaimsPrincipal)RequestContext.Principal).FindFirst(x => x.Type == "UserId").Value;
            string userRole = ((ClaimsPrincipal)RequestContext.Principal).FindFirst(x => x.Type == ClaimTypes.Role).Value;

            logger.Info("UserRole: " + userRole + ", UserId: " + userId + ": Requesting Teacher by id: " + id);

            try
            {
                Teacher teacher = teachersService.GetById(id);
                if (teacher == null)
                {
                    logger.Info("The teacher with id: " + id + " was not found.");
                    return(Request.CreateResponse(HttpStatusCode.BadRequest, "The teacher with id: " + id + " was not found."));
                }
                if (userRole == "admin")
                {
                    logger.Info("Requesting found teacher convert for " + userRole + "role.");
                    TeacherDTOForAdmin dto = toDTO.ConvertToTeacherDTOForAdmin(teacher, (List <IdentityUserRole>)teacher.Roles);
                    if (dto == null)
                    {
                        logger.Info("Failed!");
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, "Something went wrong."));
                    }
                    logger.Info("Success!");
                    return(Request.CreateResponse(HttpStatusCode.OK, dto));
                }
                else if (userRole == "teacher" && teacher.IsStillWorking == true)
                {
                    logger.Info("Requesting found teacher convert for " + userRole + "role.");
                    TeacherDTOForTeacher dto = toDTO.ConvertToTeacherDTOForTeacher(teacher);
                    if (dto == null)
                    {
                        logger.Info("Failed!");
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, "Something went wrong."));
                    }
                    logger.Info("Success!");
                    return(Request.CreateResponse(HttpStatusCode.OK, dto));
                }
                else if (teacher.IsStillWorking == true && (userRole == "student" || userRole == "parent"))
                {
                    logger.Info("Requesting found teacher convert for " + userRole + "role.");
                    TeacherDTOForStudentAndParent dto = toDTO.ConvertToTeacherDTOForStudentAndParent(teacher);
                    if (dto == null)
                    {
                        logger.Info("Failed!");
                        return(Request.CreateResponse(HttpStatusCode.BadRequest, "Something went wrong."));
                    }
                    logger.Info("Success!");
                    return(Request.CreateResponse(HttpStatusCode.OK, dto));
                }
                else //zbog provere teacher.IsStillWorking
                {
                    logger.Info("Authorisation failure. User " + userId + " is not authorised for this request.");
                    return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Access Denied. " +
                                                       "We’re sorry, but you are not authorized to perform the requested operation."));
                }
            }
            catch (Exception e)
            {
                logger.Error(e);
                return(Request.CreateErrorResponse(HttpStatusCode.BadRequest, e));
            }
        }
Ejemplo n.º 7
0
        public async Task <TeacherDTOForAdmin> Update(string id, PutTeacherDTO updated)
        {
            Teacher found = db.TeachersRepository.GetByID(id);

            if (found == null)
            {
                throw new HttpException("The Teacher with id: " + id + " was not found.");
            }
            if (updated.UserName != null)
            {
                ApplicationUser foundByUserName = await usersService.FindUserByUserName(updated.UserName);

                if (foundByUserName != null && foundByUserName.Id != found.Id)
                {
                    throw new HttpException("The username " + updated.UserName + " already exists. " +
                                            "Leave blank if you don't want to change the user name.");
                }
                found.UserName = updated.UserName;
            }
            if (updated.Jmbg != null)
            {
                ApplicationUser foundByJmbg = usersService.GetByJmbg(updated.Jmbg);
                if (foundByJmbg != null && foundByJmbg.Id != found.Id)
                {
                    throw new HttpException("The user with JMBG: " + updated.Jmbg + " is already in the sistem." +
                                            "Leave blank if you don't want to change the JMBG.");
                }
            }
            if (updated.FirstName != null)
            {
                found.FirstName = updated.FirstName;
            }
            if (updated.LastName != null)
            {
                found.LastName = updated.LastName;
            }
            if (updated.Email != null)
            {
                found.Email = updated.Email;
            }
            if (updated.EmailConfirmed != null)
            {
                found.EmailConfirmed = (bool)updated.EmailConfirmed;
            }
            if (updated.PhoneNumber != null)
            {
                found.PhoneNumber = updated.PhoneNumber;
            }
            if (updated.PhoneNumberConfirmed != null)
            {
                found.PhoneNumberConfirmed = (bool)updated.PhoneNumberConfirmed;
            }
            if (updated.Gender != null)
            {
                found.Gender = (Genders)updated.Gender;
            }

            db.TeachersRepository.Update(found);
            db.Save();

            emailsService.CreateMailForUserUpdate(found.Id);

            TeacherDTOForAdmin updatedDTO = new TeacherDTOForAdmin();

            updatedDTO = toDTO.ConvertToTeacherDTOForAdmin(found, (List <IdentityUserRole>)found.Roles);

            return(updatedDTO);
        }