Skip to content

Commit

Permalink
Merge branch 'kyle/resume' into kyle/fileUploads
Browse files Browse the repository at this point in the history
  • Loading branch information
kyleqhua committed May 15, 2020
2 parents 1f0dee7 + e8f4263 commit 4a9a8df
Show file tree
Hide file tree
Showing 9 changed files with 81 additions and 33 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,4 @@ yarn-debug.log*
.vscode/

#Ignore AWS env vars
/aws.env
/aws.env
57 changes: 39 additions & 18 deletions app/controllers/api/professional_questionnaires_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,25 +30,24 @@ def update
render json: { error: 'Could not update professional questionnaire' }, status: :unprocessable_entity
end
end

def destroy
authorize @questionnaire, policy_class: QuestionnairePolicy
if @questionnaire.destroy
render json: @questionnaire, status: :ok
else
Raven.capture_message("Failed to delete professional questionnaire")
render json: { error: 'Failed to delete professional questionnaire' }, status: :unprocessable_entity
end

def update
authorize @questionnaire, policy_class: QuestionnairePolicy
if !questionnaire_params.nil? && questionnaire_params.fetch(:resume).present? && !(questionnaire_params.fetch(:resume).eql?("null"))
if @questionnaire.resume.attached?
@questionnaire.resume.purge
end
@questionnaire.resume.attach(questionnaire_params.fetch(:resume))
end

private
def set_questionnaire
@questionnaire = authorize ProfessionalQuestionnaire.find(params[:id]), policy_class: QuestionnairePolicy
rescue ActiveRecord::RecordNotFound => exception
Raven.extra_context(professional_questionnaire_id: params[:id])
Raven.capture_exception(exception)
render json: { error: 'Could not find professional questionnaire' }, status: :not_found

if @questionnaire.update!(questionnaire_params.except(:resume))
render json: @questionnaire, status: :ok
else
Raven.capture_message("Could not update professional questionnaire")
render json: { error: 'Could not update professional questionnaire' }, status: :unprocessable_entity
end
end

def sentry_helper(professional_questionnaire)
Raven.extra_context(professional_questionnaire: professional_questionnaire.attributes)
Expand All @@ -62,6 +61,28 @@ def questionnaire_params
:barriers, :education_history, :begin_skills_assessment_date, :end_skills_assessment_date,
:assigned_mentor, :success_strategies, :resume)
end

end


private
def set_questionnaire
@questionnaire = authorize ProfessionalQuestionnaire.find(params[:id]), policy_class: QuestionnairePolicy
rescue ActiveRecord::RecordNotFound => exception
Raven.extra_context(professional_questionnaire_id: params[:id])
Raven.capture_exception(exception)
render json: { error: 'Could not find professional questionnaire' }, status: :not_found
end

def sentry_helper(professional_questionnaire)
Raven.extra_context(professional_questionnaire: professional_questionnaire.attributes)
Raven.extra_context(participant: professional_questionnaire.participant.user.attributes)
end

# may not work
def questionnaire_params
questionnaire_params = params.require(:professional_questionnaire).permit(:participant_id, :course_completion,
:work_history, :job_search_materials, :professional_goals,
:barriers, :education_history, :begin_skills_assessment_date, :end_skills_assessment_date,
:assigned_mentor, :success_strategies, :resume)
end

end
8 changes: 6 additions & 2 deletions app/controllers/pages_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def dashboard
@case_notes = policy_scope(CaseNote)
@studio_assessments = policy_scope(StudioAssessment)
@assignments = policy_scope(Assignment)

@assignment_list = []
@assignments.each do |a|
action_item = ActionItem.where(id: a.action_item_id).first
Expand Down Expand Up @@ -64,7 +64,11 @@ def dashboard
professional_q = authorize @participant.professional_questionnaire, policy_class: QuestionnairePolicy
end
@professional_questionnaire = ProfessionalQuestionnairesSerializer.new(professional_q)

@resumeURL = nil
@resumeURL = nil
if (professional_q.resume.attached?)
@resumeURL = url_for(professional_q.resume)
end
authorize Participant
dashboard_participants_path

Expand Down
2 changes: 1 addition & 1 deletion app/controllers/participants_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,4 @@ def set_participant
Raven.capture_exception(exception)
redirect_to participant_path
end
end
end
5 changes: 3 additions & 2 deletions app/javascript/components/ParticipantShowPage/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class ParticipantShowPage extends React.Component {
resumeURL,
} = this.props;

console.log(resumeURL);

return (
<Grid
container
Expand Down Expand Up @@ -92,6 +92,7 @@ class ParticipantShowPage extends React.Component {
questionnaireType="personal"
participantId={participantId}
questionnaire={personalQuestionnaire}
resumeURL={resumeURL}
/>
</Grid>
<Grid item>
Expand Down Expand Up @@ -159,4 +160,4 @@ ParticipantShowPage.propTypes = {
assignmentList: PropTypes.array,
};

export default withStyles(styles)(ParticipantShowPage);
export default withStyles(styles)(ParticipantShowPage);
10 changes: 5 additions & 5 deletions app/javascript/components/QuestionnaireForm/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class QuestionnaireForm extends React.Component {
apiPut(request, formData)
.then(() => window.location.reload())
.catch(error => {
Sentry.configureScope(function(scope) {
Sentry.configureScope(function (scope) {
scope.setExtra('file', 'QuestionnaireForm');
scope.setExtra('action', 'apiPut');
scope.setExtra('QuestionnaireForm', JSON.stringify(formData));
Expand All @@ -85,7 +85,7 @@ class QuestionnaireForm extends React.Component {
apiPut(request, { [qType]: body })
.then(() => window.location.reload())
.catch(error => {
Sentry.configureScope(function(scope) {
Sentry.configureScope(function (scope) {
scope.setExtra('file', 'QuestionnaireForm');
scope.setExtra('action', 'apiPut');
scope.setExtra('QuestionnaireForm', body);
Expand Down Expand Up @@ -427,11 +427,11 @@ class QuestionnaireForm extends React.Component {
if (this.props.resumeURL) {
return (
<Button onClick={() => window.open(this.props.resumeURL, '_blank')}>
View Uploaded File
View Uploaded Resume
</Button>
);
}
return <div>No File Uploaded</div>;
return (<div>No Resume Uploaded</div>);
}

showSelectedFile() {
Expand Down Expand Up @@ -481,4 +481,4 @@ QuestionnaireForm.propTypes = {
handleClose: PropTypes.func,
};

export default withStyles(styles)(QuestionnaireForm);
export default withStyles(styles)(QuestionnaireForm);
4 changes: 2 additions & 2 deletions app/javascript/components/QuestionnaireModal/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ function QuestionnaireModal({
return (
<>
<Button variant="contained" color="primary" onClick={() => setOpen(true)}>
{qType} INTAKE FORM
{qType} INTAKE FORM
</Button>
<Dialog
open={open}
Expand Down Expand Up @@ -73,4 +73,4 @@ QuestionnaireModal.propTypes = {
userType: PropTypes.oneOf(['staff', 'participant']).isRequired,
};

export default memo(withStyles(styles)(QuestionnaireModal));
export default memo(withStyles(styles)(QuestionnaireModal));
25 changes: 23 additions & 2 deletions app/javascript/components/QuestionnaireView/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
import React, { memo } from 'react';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import { DialogContent, Grid, Typography } from '@material-ui/core';
import { DialogContent, Grid, Typography, Button } from '@material-ui/core';

import styles from './styles';

function QuestionnaireView({ classes, questionnaire }) {
function QuestionnaireView({ classes, questionnaire, resumeURL }) {
const renderField = (title, body) => {
if (
title === 'participant' ||
Expand Down Expand Up @@ -44,12 +44,33 @@ function QuestionnaireView({ classes, questionnaire }) {
);
};

const showUploadedFile = () => {

if (resumeURL) {
return (
<Grid item className={classes.field}>
<Typography variant="h6">Resume</Typography>
<Button onClick={() => window.open(resumeURL, '_blank')}>
View Uploaded Resume
</Button>
</Grid>
);
}
return (<Grid item className={classes.field}>
<Typography variant="h6">Resume</Typography>
<Button >
No Resume Uploaded
</Button>
</Grid>);
}

return (
<DialogContent>
<Grid container direction="column">
{Object.entries(questionnaire).map(field =>
renderField(field[0], field[1]),
)}
{showUploadedFile()}
</Grid>
</DialogContent>
);
Expand Down
1 change: 1 addition & 0 deletions app/views/participants/dashboard.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@
professional_questionnaire: @professional_questionnaire,
studio_assessments: @studio_assessments.all,
assignment_list: @assignment_list,
resumeURL: @resumeURL,
}) %>

0 comments on commit 4a9a8df

Please sign in to comment.