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)); } }
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)); } }
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); }
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); }
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); }
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)); } }
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); }