public IHttpActionResult UserCompleteRegistration([FromBody] UserCompleteRegistrationRequestModel userData) { var token = ControllerHelper.GetTokenFromAuthorizationHeader(Request.Headers); using (var _db = new BroadwayBuilderContext()) { UserService userService = new UserService(_db); var user = userService.GetUserByToken(token); if (user.IsComplete) { return(BadRequest("User is already registered")); } user.FirstName = userData.FirstName; user.LastName = userData.LastName; user.City = userData.City; user.StreetAddress = userData.StreetAddress; user.StateProvince = userData.StateProvince; user.Country = userData.Country; user.IsComplete = true; user.IsEnabled = true; userService.UpdateUser(user); _db.SaveChanges(); } return(Ok()); }
public IHttpActionResult GetUserRole() { var token = ControllerHelper.GetTokenFromAuthorizationHeader(Request.Headers); if (token == null) { return(Unauthorized()); } try { using (var dbcontext = new BroadwayBuilderContext()) { var userService = new UserService(dbcontext); var userId = userService.GetUserByToken(token).UserId; var roles = userService.GetUserRoles(userId) .Select(o => Enum.GetName(typeof(DataAccessLayer.Enums.RoleEnum), o)) .ToList(); return(Ok(roles)); } } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult UserApplyToJob(int helpwantedid) { string token = ControllerHelper.GetTokenFromAuthorizationHeader(Request.Headers); if (token == null) { return(Unauthorized()); } int id = 0; try { using (var dbContext = new BroadwayBuilderContext()) { var userService = new UserService(dbContext); var user = userService.GetUserByToken(token); if (user == null) { return(Content(HttpStatusCode.NotFound, "User was not found within the database")); } var resumeService = new ResumeService(dbContext); id = user.UserId; Resume resume = resumeService.GetResumeByUserID(id); if (resume == null)//check if user has already submitted a resume; null { return(Content((HttpStatusCode)404, "No resume on file")); } var theaterJobService = new TheaterJobPostingService(dbContext); TheaterJobPosting job = theaterJobService.GetTheaterJob(helpwantedid); if (job == null)//check if job exists { return(Content((HttpStatusCode)404, "No job on file")); } var resumeJobPosting = new ResumeTheaterJob(job.HelpWantedID, resume.ResumeID); var resumeJobService = new ResumeTheaterJobService(dbContext); resumeJobService.CreateResumeTheaterJob(resumeJobPosting); var result = dbContext.SaveChanges(); if (result > 0)//check if any rows were affected in the database { LoggerHelper.LogUsage("Apply to Theater Job", user.UserId); return(Content((HttpStatusCode)200, "Successfully Applied!")); } return(Content((HttpStatusCode)500, "Wasn't able to successfully apply")); } } catch (Exception e) { LoggerHelper.LogError("User applying to TheaterJob", id, e); return(Content((HttpStatusCode)400, e.Message)); } }
public IHttpActionResult GetUserResume() { string token = ControllerHelper.GetTokenFromAuthorizationHeader(Request.Headers); if (token == null) { return(Unauthorized()); } int id = 0; try { using (var dbContext = new BroadwayBuilderContext()) { var userService = new UserService(dbContext); var user = userService.GetUserByToken(token); if (user == null)//check if user exists { return(Content((HttpStatusCode)404, "User does not exist")); } id = user.UserId; var resumeService = new ResumeService(dbContext); Resume resume = resumeService.GetResumeByUserID(id); if (resume == null)//check if user has already submitted a resume { return(Content((HttpStatusCode)404, "No resume on file")); } var subdir = Path.Combine(ConfigurationManager.AppSettings["ResumeDir"], resume.ResumeGuid.ToString()); var filePath = Path.Combine(subdir, (resume.ResumeGuid.ToString() + ".pdf")); string url = ""; if (File.Exists(filePath))//check if the file exists in the specified path { //virtual directory of the file url = ConfigurationManager.AppSettings["ApiResumeDir"] + resume.ResumeGuid + "/" + resume.ResumeGuid + ".pdf"; LoggerHelper.LogUsage("Get User Resume", user.UserId); return(Content((HttpStatusCode)200, url)); } return(Content((HttpStatusCode)404, "No resume on file")); } } catch (Exception e) { LoggerHelper.LogError("Get User Resume", id, e); return(Content((HttpStatusCode)500, e.Message)); } }
public IHttpActionResult LogoutFromApp() { string token = ControllerHelper.GetTokenFromAuthorizationHeader(Request.Headers); if (token == null) { return(Unauthorized()); } try { using (var dbContext = new BroadwayBuilderContext()) { dbContext.Sessions.Remove(dbContext.Sessions .Where(session => session.Token == token).First()); dbContext.SaveChanges(); return(Ok("User has successfully logged out.")); } } catch (Exception e) { return(InternalServerError(e)); } }
public IHttpActionResult DowngradeUser([FromUri] int userId) { var token = ControllerHelper.GetTokenFromAuthorizationHeader(Request.Headers); try { using (var dbcontext = new BroadwayBuilderContext()) { var authorizationService = new AuthorizationService(dbcontext); var userService = new UserService(dbcontext); var requestingUser = userService.GetUserByToken(token); var isAuthorized = authorizationService.HasPermission(requestingUser, DataAccessLayer.Enums.PermissionsEnum.DowngradeTheaterAdminToGeneralUser); if (!isAuthorized) { return(Unauthorized()); } var isTheaterAdmin = userService.HasUserRole(userId, DataAccessLayer.Enums.RoleEnum.TheaterAdmin); if (isTheaterAdmin) { userService.RemoveUserRole(userId, DataAccessLayer.Enums.RoleEnum.TheaterAdmin); dbcontext.SaveChanges(); } return(Ok()); } } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult UploadUserResume() { string token = ControllerHelper.GetTokenFromAuthorizationHeader(Request.Headers); if (token == null) { return(Unauthorized()); } //A list in case we want to accept more than one file type List <string> allowedFileExtension = new List <string> { ".pdf" }; //Business Rule - only one file allowed to submit int maxFileCount = 1; // Max file size is 1MB const int maxContentLength = 1024 * 1024 * 1; try { //get the content, headers, etc the full request of the current http request var httpRequest = HttpContext.Current.Request; var fileValidator = new FileValidator(); //Validate the submitted file to verify that it complies with Business Rules var validationResult = fileValidator.ValidateFiles(httpRequest.Files, allowedFileExtension, maxContentLength, maxFileCount); if (!validationResult.ValidationSuccessful)//if one or more business rules were violated { var errorMessage = string.Join("\n", validationResult.Reasons); return(Content((HttpStatusCode)406, errorMessage)); } // Grab current file of the request var postedFile = httpRequest.Files[0]; using (var dbContext = new BroadwayBuilderContext()) { var userService = new UserService(dbContext); var user = userService.GetUserByToken(token); if (user == null)//check if user exists { return(Content((HttpStatusCode)404, "User does not exist")); } var resumeService = new ResumeService(dbContext); Resume resume = resumeService.GetResumeByUserID(user.UserId); if (resume == null)//check if user has already submitted a resume { Resume userResume = new Resume(user.UserId, Guid.NewGuid()); resumeService.CreateResume(userResume); var result = dbContext.SaveChanges(); if (result <= 0) { return(Content((HttpStatusCode)500, "Failed to add a resume onto our database")); } resume = userResume; } //Folder path of the user var subdir = Path.Combine(ConfigurationManager.AppSettings["ResumeDir"], (resume.ResumeGuid.ToString() + "/")); //@"C:\Resumes\"+resume.ResumeGuid; //Filepath of the submitted file var filePath = Path.Combine(subdir, resume.ResumeGuid.ToString() + ".pdf"); // subdir+@"\"+resume.ResumeGuid+".pdf"; if (!Directory.Exists(subdir)) //check if the directory exists { Directory.CreateDirectory(subdir); //create the directory if it doesnt exist } //saves file onto the specified file path and overwrites any file that may exist in that shares the same path postedFile.SaveAs(filePath); LoggerHelper.LogUsage("Upload Resume", user.UserId); return(Content((HttpStatusCode)200, "File Uploaded")); } } catch (HttpException e)//HttpPostedFile.SaveAs exception { return(Content((HttpStatusCode)500, "Unable to save the file onto our file system.")); } catch (IOException e)//Exception thrown when creating directory { return(Content((HttpStatusCode)500, "Unable to delete the job posting")); } catch (DbUpdateException e)//exception thrown while saving the database { return(Content((HttpStatusCode)500, "Unable to delete the job posting")); } catch (DbEntityValidationException dbEntityValidationException) { return(Content((HttpStatusCode)500, "Unable to delete the job posting")); } catch (Exception e) { return(Content((HttpStatusCode)400, e.Message)); } }