コード例 #1
0
        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());
        }
コード例 #2
0
        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));
            }
        }
コード例 #3
0
        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));
            }
        }
コード例 #4
0
        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));
            }
        }
コード例 #5
0
        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));
            }
        }
コード例 #6
0
        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));
            }
        }
コード例 #7
0
        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));
            }
        }