Skip to content
This repository has been archived by the owner on Feb 1, 2024. It is now read-only.

Commit

Permalink
Update claimed facility profile fields
Browse files Browse the repository at this point in the history
- split facility_name field into facility_name_english and
facility_name_non_english
- add facility_workers_count field
- add facility_female_workers_percentage field
- update profile form to make new fields editable
- display new fields on facility details screen
  • Loading branch information
Kelly Innes committed Jul 8, 2019
1 parent 3758632 commit 89f9537
Show file tree
Hide file tree
Showing 9 changed files with 223 additions and 24 deletions.
10 changes: 8 additions & 2 deletions src/app/src/actions/claimedFacilityDetails.js
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,10 @@ export function submitClaimedFacilityDetailsUpdate(claimID) {
};
}

export const updateClaimedFacilityName =
createAction('UPDATE_CLAIMED_FACILITY_NAME');
export const updateClaimedFacilityNameEnglish =
createAction('UPDATE_CLAIMED_FACILITY_NAME_ENGLISH');
export const updateClaimedFacilityNameNonEnglish =
createAction('UPDATE_CLAIMED_FACILITY_NAME_NON_ENGLISH');
export const updateClaimedFacilityAddress =
createAction('UPDATE_CLAIMED_FACILITY_ADDRESS');
export const updateClaimedFacilityPhone =
Expand All @@ -101,6 +103,10 @@ export const updateClaimedFacilityMinimumOrder =
createAction('UPDATE_CLAIMED_FACILITY_MINIMUM_ORDER');
export const updateClaimedFacilityAverageLeadTime =
createAction('UPDATE_CLAIMED_FACILITY_AVERAGE_LEAD_TIME');
export const updateClaimedFacilityWorkersCount =
createAction('UPDATE_CLAIMED_FACILITY_WORKERS_COUNT');
export const updateClaimedFacilityFemaleWorkersPercentage =
createAction('UPDATE_CLAIMED_FACILITY_FEMALE_WORKERS_PERCENTAGE');
export const updateClaimedFacilityPointOfContactVisibility =
createAction('UPDATE_CLAIMED_FACILITY_POINT_OF_CONTACT_VISIBILITY');
export const updateClaimedFacilityContactPersonName =
Expand Down
78 changes: 70 additions & 8 deletions src/app/src/components/ClaimedFacilitiesDetails.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ import isEmpty from 'lodash/isEmpty';
import get from 'lodash/get';
import isNull from 'lodash/isNull';
import Select from 'react-select';
import { isEmail } from 'validator';
import { isEmail, isInt } from 'validator';
import { toast } from 'react-toastify';

import ClaimedFacilitiesDetailsSidebar from './ClaimedFacilitiesDetailsSidebar';
Expand All @@ -27,7 +27,10 @@ import COLOURS from '../util/COLOURS';
import {
fetchClaimedFacilityDetails,
clearClaimedFacilityDetails,
updateClaimedFacilityName,
updateClaimedFacilityNameEnglish,
updateClaimedFacilityNameNonEnglish,
updateClaimedFacilityWorkersCount,
updateClaimedFacilityFemaleWorkersPercentage,
updateClaimedFacilityAddress,
updateClaimedFacilityPhone,
updateClaimedFacilityPhoneVisibility,
Expand Down Expand Up @@ -228,14 +231,17 @@ function ClaimedFacilitiesDetails({
data,
getDetails,
clearDetails,
updateFacilityName,
updateFacilityNameEnglish,
updateFacilityNameNonEnglish,
updateFacilityAddress,
updateFacilityPhone,
updateFacilityWebsite,
updateFacilityWebsiteVisibility,
updateFacilityDescription,
updateFacilityMinimumOrder,
updateFacilityAverageLeadTime,
updateFacilityWorkersCount,
updateFacilityFemaleWorkersPercentage,
updateContactPerson,
updateContactEmail,
updateOfficeName,
Expand Down Expand Up @@ -311,9 +317,15 @@ function ClaimedFacilitiesDetails({
Facility Details
</Typography>
<InputSection
label="Facility name"
value={data.facility_name}
onChange={updateFacilityName}
label="Facility name (English language)"
value={data.facility_name_english}
onChange={updateFacilityNameEnglish}
disabled={updating}
/>
<InputSection
label="Facility name (non-English language)"
value={data.facility_name_non_english}
onChange={updateFacilityNameNonEnglish}
disabled={updating}
/>
<InputSection
Expand Down Expand Up @@ -378,6 +390,42 @@ function ClaimedFacilitiesDetails({
onChange={updateFacilityAverageLeadTime}
disabled={updating}
/>
<InputSection
label="Number of workers"
value={data.facility_workers_count}
onChange={updateFacilityWorkersCount}
disabled={updating}
hasValidationErrorFn={
() => {
if (isEmpty(data.facility_workers_count)) {
return false;
}

return !isInt(
data.facility_workers_count,
{ gt: 0 },
);
}
}
/>
<InputSection
label="Percentage of female workers"
value={data.facility_female_workers_percentage}
onChange={updateFacilityFemaleWorkersPercentage}
disabled={updating}
hasValidationErrorFn={
() => {
if (isEmpty(data.facility_female_workers_percentage)) {
return false;
}

return !isInt(
data.facility_female_workers_percentage,
{ min: 0, max: 100 },
);
}
}
/>
<Typography
variant="title"
style={claimedFacilitiesDetailsStyles.headingStyles}
Expand Down Expand Up @@ -511,7 +559,10 @@ ClaimedFacilitiesDetails.propTypes = {
data: approvedFacilityClaimPropType,
getDetails: func.isRequired,
clearDetails: func.isRequired,
updateFacilityName: func.isRequired,
updateFacilityNameEnglish: func.isRequired,
updateFacilityNameNonEnglish: func.isRequired,
updateFacilityWorkersCount: func.isRequired,
updateFacilityFemaleWorkersPercentage: func.isRequired,
updateFacilityAddress: func.isRequired,
updateFacilityPhone: func.isRequired,
updateFacilityWebsite: func.isRequired,
Expand Down Expand Up @@ -580,7 +631,12 @@ function mapDispatchToProps(
return {
getDetails: () => dispatch(fetchClaimedFacilityDetails(claimID)),
clearDetails: () => dispatch(clearClaimedFacilityDetails()),
updateFacilityName: makeDispatchValueFn(updateClaimedFacilityName),
updateFacilityNameEnglish: makeDispatchValueFn(
updateClaimedFacilityNameEnglish,
),
updateFacilityNameNonEnglish: makeDispatchValueFn(
updateClaimedFacilityNameNonEnglish,
),
updateFacilityAddress: makeDispatchValueFn(
updateClaimedFacilityAddress,
),
Expand Down Expand Up @@ -614,6 +670,12 @@ function mapDispatchToProps(
updateFacilityAverageLeadTime: makeDispatchValueFn(
updateClaimedFacilityAverageLeadTime,
),
updateFacilityWorkersCount: makeDispatchValueFn(
updateClaimedFacilityWorkersCount,
),
updateFacilityFemaleWorkersPercentage: makeDispatchValueFn(
updateClaimedFacilityFemaleWorkersPercentage,
),
updateContactPerson: makeDispatchValueFn(
updateClaimedFacilityContactPersonName,
),
Expand Down
18 changes: 14 additions & 4 deletions src/app/src/components/FacilityDetailSidebarClaimedInfo.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,17 @@ export default function FacilityDetailsSidebarClaimedInfo({
</Link>
</div>
<ClaimInfoSection
label="Name"
value={facility.name}
label="Name (English language)"
value={facility.name_english}
/>
<ClaimInfoSection
label="Name (non-English language)"
value={facility.name_non_english}
/>

<ClaimInfoSection
label="Address"
value={facility.address}
/>

<ClaimInfoSection
label="Description"
value={facility.description}
Expand Down Expand Up @@ -103,6 +105,14 @@ export default function FacilityDetailsSidebarClaimedInfo({
value={facility.facility_average_lead_time}
label="Average Lead Time"
/>
<ClaimInfoSection
value={facility.workers_count}
label="Number of workers"
/>
<ClaimInfoSection
value={facility.female_workers_percentage}
label="Percentage of female workers"
/>
</>
);

Expand Down
35 changes: 32 additions & 3 deletions src/app/src/reducers/ClaimedFacilityDetailsReducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ import {
startUpdateClaimedFacilityDetails,
failUpdateClaimedFacilityDetails,
completeUpdateClaimedFacilityDetails,
updateClaimedFacilityName,
updateClaimedFacilityNameEnglish,
updateClaimedFacilityNameNonEnglish,
updateClaimedFacilityAddress,
updateClaimedFacilityPhone,
updateClaimedFacilityPhoneVisibility,
Expand All @@ -18,6 +19,8 @@ import {
updateClaimedFacilityDescription,
updateClaimedFacilityMinimumOrder,
updateClaimedFacilityAverageLeadTime,
updateClaimedFacilityWorkersCount,
updateClaimedFacilityFemaleWorkersPercentage,
updateClaimedFacilityPointOfContactVisibility,
updateClaimedFacilityContactPersonName,
updateClaimedFacilityContactEmail,
Expand Down Expand Up @@ -79,12 +82,38 @@ export default createReducer({
},
data: { $set: data },
}),
[updateClaimedFacilityName]: (state, name) => update(state, {
[updateClaimedFacilityNameEnglish]: (state, name) => update(state, {
updateData: {
error: { $set: initialState.updateData.error },
},
data: {
facility_name: { $set: name },
facility_name_english: { $set: name },
},
}),
[updateClaimedFacilityNameNonEnglish]: (state, name) => update(state, {
updateData: {
error: { $set: initialState.updateData.error },
},
data: {
facility_name_non_english: { $set: name },
},
}),
[updateClaimedFacilityWorkersCount]: (state, workersCount) => update(state, {
updateData: {
error: { $set: initialState.updateData.error },
},
data: {
facility_workers_count: { $set: workersCount },
},
}),
[updateClaimedFacilityFemaleWorkersPercentage]: (state, percentage) => update(state, {
updateData: {
error: { $set: initialState.updateData.error },
},
data: {
facility_female_workers_percentage: {
$set: percentage,
},
},
}),
[updateClaimedFacilityAddress]: (state, address) => update(state, {
Expand Down
5 changes: 4 additions & 1 deletion src/app/src/util/propTypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -259,14 +259,17 @@ export const facilityClaimPropType = shape({
export const approvedFacilityClaimPropType = shape({
id: number.isRequired,
facility_description: string.isRequired,
facility_name: string.isRequired,
facility_name_english: string.isRequired,
facility_name_non_english: string.isRequired,
facility_address: string.isRequired,
facility_phone_number: string.isRequired,
facility_phone_number_publicly_visible: bool.isRequired,
facility_website: string.isRequired,
facility_website_publicly_visible: bool.isRequired,
facility_minimum_order_quantity: string.isRequired,
facility_average_lead_time: string.isRequired,
facility_workers_count: number.isRequired,
facility_female_workers_percentage: number.isRequired,
point_of_contact_person_name: string.isRequired,
point_of_contact_email: string.isRequired,
point_of_contact_publicly_visible: bool.isRequired,
Expand Down
61 changes: 61 additions & 0 deletions src/django/api/migrations/0021_auto_20190708_1947.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Generated by Django 2.0.13 on 2019-07-08 19:47

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('api', '0020_auto_20190708_1730'),
]

operations = [
migrations.RemoveField(
model_name='facilityclaim',
name='facility_name',
),
migrations.RemoveField(
model_name='historicalfacilityclaim',
name='facility_name',
),
migrations.AddField(
model_name='facilityclaim',
name='facility_female_workers_percentage',
field=models.IntegerField(blank=True, choices=[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9), (10, 10), (11, 11), (12, 12), (13, 13), (14, 14), (15, 15), (16, 16), (17, 17), (18, 18), (19, 19), (20, 20), (21, 21), (22, 22), (23, 23), (24, 24), (25, 25), (26, 26), (27, 27), (28, 28), (29, 29), (30, 30), (31, 31), (32, 32), (33, 33), (34, 34), (35, 35), (36, 36), (37, 37), (38, 38), (39, 39), (40, 40), (41, 41), (42, 42), (43, 43), (44, 44), (45, 45), (46, 46), (47, 47), (48, 48), (49, 49), (50, 50), (51, 51), (52, 52), (53, 53), (54, 54), (55, 55), (56, 56), (57, 57), (58, 58), (59, 59), (60, 60), (61, 61), (62, 62), (63, 63), (64, 64), (65, 65), (66, 66), (67, 67), (68, 68), (69, 69), (70, 70), (71, 71), (72, 72), (73, 73), (74, 74), (75, 75), (76, 76), (77, 77), (78, 78), (79, 79), (80, 80), (81, 81), (82, 82), (83, 83), (84, 84), (85, 85), (86, 86), (87, 87), (88, 88), (89, 89), (90, 90), (91, 91), (92, 92), (93, 93), (94, 94), (95, 95), (96, 96), (97, 97), (98, 98), (99, 99), (100, 100)], help_text="Integer value indicating the facility's percentage of female workers.", null=True),
),
migrations.AddField(
model_name='facilityclaim',
name='facility_name_english',
field=models.CharField(blank=True, help_text='The editable official English facility name for the claim.', max_length=200, null=True),
),
migrations.AddField(
model_name='facilityclaim',
name='facility_name_non_english',
field=models.CharField(blank=True, help_text="The claim's editable official non-English facility name.", max_length=200, null=True),
),
migrations.AddField(
model_name='facilityclaim',
name='facility_workers_count',
field=models.IntegerField(blank=True, help_text='The editable facility workers count for this claim.', null=True),
),
migrations.AddField(
model_name='historicalfacilityclaim',
name='facility_female_workers_percentage',
field=models.IntegerField(blank=True, choices=[(0, 0), (1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9), (10, 10), (11, 11), (12, 12), (13, 13), (14, 14), (15, 15), (16, 16), (17, 17), (18, 18), (19, 19), (20, 20), (21, 21), (22, 22), (23, 23), (24, 24), (25, 25), (26, 26), (27, 27), (28, 28), (29, 29), (30, 30), (31, 31), (32, 32), (33, 33), (34, 34), (35, 35), (36, 36), (37, 37), (38, 38), (39, 39), (40, 40), (41, 41), (42, 42), (43, 43), (44, 44), (45, 45), (46, 46), (47, 47), (48, 48), (49, 49), (50, 50), (51, 51), (52, 52), (53, 53), (54, 54), (55, 55), (56, 56), (57, 57), (58, 58), (59, 59), (60, 60), (61, 61), (62, 62), (63, 63), (64, 64), (65, 65), (66, 66), (67, 67), (68, 68), (69, 69), (70, 70), (71, 71), (72, 72), (73, 73), (74, 74), (75, 75), (76, 76), (77, 77), (78, 78), (79, 79), (80, 80), (81, 81), (82, 82), (83, 83), (84, 84), (85, 85), (86, 86), (87, 87), (88, 88), (89, 89), (90, 90), (91, 91), (92, 92), (93, 93), (94, 94), (95, 95), (96, 96), (97, 97), (98, 98), (99, 99), (100, 100)], help_text="Integer value indicating the facility's percentage of female workers.", null=True),
),
migrations.AddField(
model_name='historicalfacilityclaim',
name='facility_name_english',
field=models.CharField(blank=True, help_text='The editable official English facility name for the claim.', max_length=200, null=True),
),
migrations.AddField(
model_name='historicalfacilityclaim',
name='facility_name_non_english',
field=models.CharField(blank=True, help_text="The claim's editable official non-English facility name.", max_length=200, null=True),
),
migrations.AddField(
model_name='historicalfacilityclaim',
name='facility_workers_count',
field=models.IntegerField(blank=True, help_text='The editable facility workers count for this claim.', null=True),
),
]
19 changes: 17 additions & 2 deletions src/django/api/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -468,11 +468,16 @@ class FacilityClaim(models.Model):
help_text='The user who changed the status of this facility claim',
related_name='approver_of_claim')
status_change_date = models.DateTimeField(null=True)
facility_name = models.CharField(
facility_name_english = models.CharField(
max_length=200,
null=True,
blank=True,
help_text='The editable facility name for this claim.')
help_text='The editable official English facility name for the claim.')
facility_name_non_english = models.CharField(
max_length=200,
null=True,
blank=True,
help_text='The claim\'s editable official non-English facility name.')
facility_address = models.CharField(
max_length=200,
null=True,
Expand Down Expand Up @@ -506,6 +511,16 @@ class FacilityClaim(models.Model):
null=True,
blank=True,
help_text='The editable facilty avg lead time for this claim.')
facility_workers_count = models.IntegerField(
null=True,
blank=True,
help_text='The editable facility workers count for this claim.')
facility_female_workers_percentage = models.IntegerField(
null=True,
blank=True,
choices=[(i, i) for i in range(0, 101)],
help_text=('Integer value indicating the facility\'s percentage of '
'female workers.'))
point_of_contact_person_name = models.CharField(
max_length=200,
null=True,
Expand Down
Loading

0 comments on commit 89f9537

Please sign in to comment.