From f9f6d85e8338672e8a8301b0dd0690665961cea0 Mon Sep 17 00:00:00 2001 From: lahirulakruwan Date: Thu, 3 Oct 2024 22:56:18 +0530 Subject: [PATCH] update person api changes added --- campus/bffs/enrollment/api/client.bal | 4 +- campus/bffs/enrollment/api/service.bal | 52 +++++++-------- campus/bffs/enrollment/api/types.bal | 10 ++- .../graphql_client/enrollment.graphql | 8 ++- .../graphql_client_cg_src/client.bal | 4 +- .../graphql_client_cg_src/types.bal | 4 ++ .../enrollment/graphql_client/schema.graphql | 3 + .../enrollment/graphql_client/schema.json | 63 +++++++++++++++++++ 8 files changed, 115 insertions(+), 33 deletions(-) diff --git a/campus/bffs/enrollment/api/client.bal b/campus/bffs/enrollment/api/client.bal index 16d5c3b..af8378f 100644 --- a/campus/bffs/enrollment/api/client.bal +++ b/campus/bffs/enrollment/api/client.bal @@ -40,8 +40,8 @@ public isolated client class GraphqlClient { json graphqlResponse = check self.graphqlClient->executeWithType(query, variables); return check performDataBinding(graphqlResponse, GetPersonByIdResponse); } - remote isolated function updatePerson(City permanent_address_city, Address mailing_address, Person person, Address permanent_address, City mailing_address_city) returns UpdatePersonResponse|graphql:ClientError { - string query = string `mutation updatePerson($person:Person!,$permanent_address:Address!,$permanent_address_city:City!,$mailing_address:Address!,$mailing_address_city:City!) {update_person(person:$person,permanent_address:$permanent_address,permanent_address_city:$permanent_address_city,mailing_address:$mailing_address,mailing_address_city:$mailing_address_city) {id preferred_name full_name date_of_birth sex asgardeo_id jwt_sub_id created updated jwt_email permanent_address {city {id name {name_en name_si name_ta}} street_address phone id} mailing_address {city {id name {name_en name_si name_ta}} street_address phone id} phone organization {id description notes address {id} avinya_type {id name} name {name_en} parent_organizations {id name {name_en}}} avinya_type {id name} notes nic_no passport_no id_no email street_address digital_id avinya_phone bank_name bank_account_number bank_account_name academy_org_id bank_branch}}`; + remote isolated function updatePerson(Person person, City? permanent_address_city = (), Address? mailing_address = (), Address? permanent_address = (), City? mailing_address_city = ()) returns UpdatePersonResponse|graphql:ClientError { + string query = string `mutation updatePerson($person:Person!,$permanent_address:Address,$permanent_address_city:City,$mailing_address:Address,$mailing_address_city:City) {update_person(person:$person,permanent_address:$permanent_address,permanent_address_city:$permanent_address_city,mailing_address:$mailing_address,mailing_address_city:$mailing_address_city) {id preferred_name full_name date_of_birth sex asgardeo_id jwt_sub_id created updated jwt_email permanent_address {city {id name {name_en name_si name_ta}} street_address phone id} mailing_address {city {id name {name_en name_si name_ta}} street_address phone id} phone organization {id description notes address {id} avinya_type {id name} name {name_en} parent_organizations {id name {name_en}}} avinya_type {id name} notes nic_no passport_no id_no email street_address digital_id avinya_phone bank_name bank_account_number bank_account_name academy_org_id bank_branch created_by updated_by current_job}}`; map variables = {"permanent_address_city": permanent_address_city, "mailing_address": mailing_address, "person": person, "permanent_address": permanent_address, "mailing_address_city": mailing_address_city}; json graphqlResponse = check self.graphqlClient->executeWithType(query, variables); return check performDataBinding(graphqlResponse, UpdatePersonResponse); diff --git a/campus/bffs/enrollment/api/service.bal b/campus/bffs/enrollment/api/service.bal index 318abff..d5f5ba2 100644 --- a/campus/bffs/enrollment/api/service.bal +++ b/campus/bffs/enrollment/api/service.bal @@ -78,69 +78,71 @@ service / on new http:Listener(9095) { resource function get districts() returns District[]|error { GetDistrictsResponse|graphql:ClientError getDistrictsResponse = globalDataClient->getDistricts(); - if(getDistrictsResponse is GetDistrictsResponse) { + if (getDistrictsResponse is GetDistrictsResponse) { District[] districtsData = []; foreach var district in getDistrictsResponse.districts { District|error districtData = district.cloneWithType(District); - if(districtData is District) { + if (districtData is District) { districtsData.push(districtData); } else { log:printError("Error while processing Application record received", districtData); - return error("Error while processing Application record received: " + districtData.message() + + return error("Error while processing Application record received: " + districtData.message() + ":: Detail: " + districtData.detail().toString()); } } return districtsData; - + } else { log:printError("Error while getting application", getDistrictsResponse); - return error("Error while getting application: " + getDistrictsResponse.message() + + return error("Error while getting application: " + getDistrictsResponse.message() + ":: Detail: " + getDistrictsResponse.detail().toString()); } } resource function get all_organizations() returns Organization[]|error { GetAllOrganizationsResponse|graphql:ClientError getAllOrganizationsResponse = globalDataClient->getAllOrganizations(); - if(getAllOrganizationsResponse is GetAllOrganizationsResponse) { + if (getAllOrganizationsResponse is GetAllOrganizationsResponse) { Organization[] organizationsData = []; foreach var organization in getAllOrganizationsResponse.all_organizations { Organization|error organizationData = organization.cloneWithType(Organization); - if(organizationData is Organization) { + if (organizationData is Organization) { organizationsData.push(organizationData); } else { log:printError("Error while processing Application record received", organizationData); - return error("Error while processing Application record received: " + organizationData.message() + + return error("Error while processing Application record received: " + organizationData.message() + ":: Detail: " + organizationData.detail().toString()); } } return organizationsData; - + } else { log:printError("Error while getting application", getAllOrganizationsResponse); - return error("Error while getting application: " + getAllOrganizationsResponse.message() + + return error("Error while getting application: " + getAllOrganizationsResponse.message() + ":: Detail: " + getAllOrganizationsResponse.detail().toString()); } } resource function put update_person(@http:Payload Person person) returns Person|error { - Address permanent_address =
person?.permanent_address; - Address mailing_address =
person?.mailing_address; - City permanent_address_city = permanent_address?.city; - City mailing_address_city = mailing_address?.city; - anydata remove_permanent_address_city = permanent_address.remove("city"); - anydata remove_mailing_address_city = mailing_address.remove("city"); - anydata remove_permanent_address = person.remove("permanent_address"); - anydata remove_mailing_address = person.remove("mailing_address"); - log:printDebug(remove_permanent_address.toString()); - log:printDebug(remove_mailing_address.toString()); - log:printDebug(remove_permanent_address_city.toString()); - log:printDebug(remove_mailing_address_city.toString()); - - - UpdatePersonResponse|graphql:ClientError updatePersonResponse = globalDataClient->updatePerson(permanent_address_city,mailing_address,person,permanent_address,mailing_address_city); + Address? permanent_address = person?.permanent_address; + Address? mailing_address = person?.mailing_address; + City? permanent_address_city = permanent_address?.city; + City? mailing_address_city = mailing_address?.city; + + if(permanent_address is Address){ + permanent_address.city = (); + } + + if(mailing_address is Address){ + mailing_address.city = (); + } + + person.permanent_address = (); + person.mailing_address = (); + + UpdatePersonResponse|graphql:ClientError updatePersonResponse = globalDataClient->updatePerson(person, permanent_address_city, mailing_address, permanent_address, mailing_address_city); if (updatePersonResponse is UpdatePersonResponse) { Person|error person_record = updatePersonResponse.update_person.cloneWithType(Person); if (person_record is Person) { diff --git a/campus/bffs/enrollment/api/types.bal b/campus/bffs/enrollment/api/types.bal index 8e6ea92..fbec93a 100644 --- a/campus/bffs/enrollment/api/types.bal +++ b/campus/bffs/enrollment/api/types.bal @@ -94,8 +94,11 @@ public type Person record { string? digital_id?; string? sex?; string? passport_no?; + string? current_job?; + int? created_by?; string? record_type?; Address? mailing_address?; + string? branch_code?; int[]? child_student?; string? bank_account_name?; int? avinya_phone?; @@ -103,13 +106,13 @@ public type Person record { string? nic_no?; int? phone?; int? organization_id?; + int? updated_by?; + string? academy_org_name?; string? asgardeo_id?; string? updated?; string? preferred_name?; string? jwt_sub_id?; int? academy_org_id?; - int? created_by?; - int? updated_by?; }; public type GetPersonsResponse record {| @@ -352,6 +355,9 @@ public type UpdatePersonResponse record {| string? bank_account_name; int? academy_org_id; string? bank_branch; + int? created_by; + int? updated_by; + string? current_job; |}? update_person; |}; diff --git a/campus/bffs/enrollment/graphql_client/enrollment.graphql b/campus/bffs/enrollment/graphql_client/enrollment.graphql index 9319678..f838a81 100644 --- a/campus/bffs/enrollment/graphql_client/enrollment.graphql +++ b/campus/bffs/enrollment/graphql_client/enrollment.graphql @@ -158,8 +158,9 @@ query getPersonById($id: Int!) { } } -mutation updatePerson($person: Person!,$permanent_address: Address!,$permanent_address_city: City!,$mailing_address: Address!,$mailing_address_city: City!) { - update_person(person: $person,permanent_address: $permanent_address,permanent_address_city: $permanent_address_city, +mutation updatePerson($person: Person!,$permanent_address: Address,$permanent_address_city: City, + $mailing_address: Address,$mailing_address_city: City) { + update_person(person: $person,permanent_address: $permanent_address,permanent_address_city: $permanent_address_city, mailing_address: $mailing_address,mailing_address_city: $mailing_address_city) { id preferred_name @@ -236,6 +237,9 @@ mutation updatePerson($person: Person!,$permanent_address: Address!,$permanent_a bank_account_name academy_org_id bank_branch + created_by + updated_by + current_job } } diff --git a/campus/bffs/enrollment/graphql_client/graphql_client_cg_src/client.bal b/campus/bffs/enrollment/graphql_client/graphql_client_cg_src/client.bal index 0da245c..e069424 100644 --- a/campus/bffs/enrollment/graphql_client/graphql_client_cg_src/client.bal +++ b/campus/bffs/enrollment/graphql_client/graphql_client_cg_src/client.bal @@ -39,8 +39,8 @@ public isolated client class GraphqlClient { json graphqlResponse = check self.graphqlClient->executeWithType(query, variables); return check performDataBinding(graphqlResponse, GetPersonByIdResponse); } - remote isolated function updatePerson(City permanent_address_city, Address mailing_address, Person person, Address permanent_address, City mailing_address_city) returns UpdatePersonResponse|graphql:ClientError { - string query = string `mutation updatePerson($person:Person!,$permanent_address:Address!,$permanent_address_city:City!,$mailing_address:Address!,$mailing_address_city:City!) {update_person(person:$person,permanent_address:$permanent_address,permanent_address_city:$permanent_address_city,mailing_address:$mailing_address,mailing_address_city:$mailing_address_city) {id preferred_name full_name date_of_birth sex asgardeo_id jwt_sub_id created updated jwt_email permanent_address {city {id name {name_en name_si name_ta}} street_address phone id} mailing_address {city {id name {name_en name_si name_ta}} street_address phone id} phone organization {id description notes address {id} avinya_type {id name} name {name_en} parent_organizations {id name {name_en}}} avinya_type {id name} notes nic_no passport_no id_no email street_address digital_id avinya_phone bank_name bank_account_number bank_account_name academy_org_id bank_branch}}`; + remote isolated function updatePerson(Person person, City? permanent_address_city = (), Address? mailing_address = (), Address? permanent_address = (), City? mailing_address_city = ()) returns UpdatePersonResponse|graphql:ClientError { + string query = string `mutation updatePerson($person:Person!,$permanent_address:Address,$permanent_address_city:City,$mailing_address:Address,$mailing_address_city:City) {update_person(person:$person,permanent_address:$permanent_address,permanent_address_city:$permanent_address_city,mailing_address:$mailing_address,mailing_address_city:$mailing_address_city) {id preferred_name full_name date_of_birth sex asgardeo_id jwt_sub_id created updated jwt_email permanent_address {city {id name {name_en name_si name_ta}} street_address phone id} mailing_address {city {id name {name_en name_si name_ta}} street_address phone id} phone organization {id description notes address {id} avinya_type {id name} name {name_en} parent_organizations {id name {name_en}}} avinya_type {id name} notes nic_no passport_no id_no email street_address digital_id avinya_phone bank_name bank_account_number bank_account_name academy_org_id bank_branch created_by updated_by current_job}}`; map variables = {"permanent_address_city": permanent_address_city, "mailing_address": mailing_address, "person": person, "permanent_address": permanent_address, "mailing_address_city": mailing_address_city}; json graphqlResponse = check self.graphqlClient->executeWithType(query, variables); return check performDataBinding(graphqlResponse, UpdatePersonResponse); diff --git a/campus/bffs/enrollment/graphql_client/graphql_client_cg_src/types.bal b/campus/bffs/enrollment/graphql_client/graphql_client_cg_src/types.bal index 9627c2c..eb52437 100644 --- a/campus/bffs/enrollment/graphql_client/graphql_client_cg_src/types.bal +++ b/campus/bffs/enrollment/graphql_client/graphql_client_cg_src/types.bal @@ -310,6 +310,7 @@ public type Person record { string? digital_id?; string? sex?; string? passport_no?; + string? current_job?; int? created_by?; string? record_type?; Address? mailing_address?; @@ -666,6 +667,9 @@ public type UpdatePersonResponse record {| string? bank_account_name; int? academy_org_id; string? bank_branch; + int? created_by; + int? updated_by; + string? current_job; |}? update_person; |}; diff --git a/campus/bffs/enrollment/graphql_client/schema.graphql b/campus/bffs/enrollment/graphql_client/schema.graphql index 06786dd..b3f3ef8 100644 --- a/campus/bffs/enrollment/graphql_client/schema.graphql +++ b/campus/bffs/enrollment/graphql_client/schema.graphql @@ -666,6 +666,7 @@ type Mutation { update_consumable_replenishment(inventories: [Inventory!]!): [InventoryData!] update_consumable_depletion(inventories: [Inventory!]!): [InventoryData!] update_person(person: Person!, permanent_address: Address, permanent_address_city: City, mailing_address: Address, mailing_address_city: City): PersonData + insert_person(person: Person!, mailing_address: Address, mailing_address_city: City): PersonData } input Organization { @@ -747,6 +748,7 @@ input Person { academy_org_id: Int academy_org_name: String branch_code: String + current_job: String created_by: Int updated_by: Int } @@ -785,6 +787,7 @@ type PersonData { academy_org_id: Int organization_id: Int branch_code: String + current_job: String created_by: Int updated_by: Int } diff --git a/campus/bffs/enrollment/graphql_client/schema.json b/campus/bffs/enrollment/graphql_client/schema.json index eb62c48..29facc7 100644 --- a/campus/bffs/enrollment/graphql_client/schema.json +++ b/campus/bffs/enrollment/graphql_client/schema.json @@ -391,6 +391,17 @@ "isDeprecated": false, "deprecationReason": null }, + { + "name": "current_job", + "args": [], + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null + }, { "name": "created_by", "args": [], @@ -8670,6 +8681,49 @@ }, "isDeprecated": false, "deprecationReason": null + }, + { + "name": "insert_person", + "args": [ + { + "name": "person", + "type": { + "kind": "NON_NULL", + "name": null, + "ofType": { + "kind": "INPUT_OBJECT", + "name": "Person", + "ofType": null + } + }, + "defaultValue": null + }, + { + "name": "mailing_address", + "type": { + "kind": "INPUT_OBJECT", + "name": "Address", + "ofType": null + }, + "defaultValue": null + }, + { + "name": "mailing_address_city", + "type": { + "kind": "INPUT_OBJECT", + "name": "City", + "ofType": null + }, + "defaultValue": null + } + ], + "type": { + "kind": "OBJECT", + "name": "PersonData", + "ofType": null + }, + "isDeprecated": false, + "deprecationReason": null } ], "inputFields": null, @@ -9180,6 +9234,15 @@ }, "defaultValue": null }, + { + "name": "current_job", + "type": { + "kind": "SCALAR", + "name": "String", + "ofType": null + }, + "defaultValue": null + }, { "name": "created_by", "type": {