diff --git a/Anchor.toml b/Anchor.toml index 71141ee..829a433 100644 --- a/Anchor.toml +++ b/Anchor.toml @@ -16,7 +16,7 @@ immunopass = "2KywXPJLebpRqAGDeWuQDEaReX3M951js7DorDCFtvRW" url = "https://anchor.projectserum.com" [provider] -cluster = "devnet" +cluster = "localnet" wallet = "/home/rusiru/.config/solana/id.json" [scripts] diff --git a/app/src/config.js b/app/src/config.js index c83670e..8d6b360 100644 --- a/app/src/config.js +++ b/app/src/config.js @@ -7,7 +7,7 @@ export const workspace = { } export const network = { - local: "https://api.devnet.solana.com", + local: "http://127.0.0.1:8899", localnet: "http://127.0.0.1:8899", testnet: "https://api.testnet.solana.com", mainnet: "https://api.mainnet.solana.com", diff --git a/app/src/pages/doctor/DoctorDashboard.jsx b/app/src/pages/doctor/DoctorDashboard.jsx index 3e86249..be570d0 100644 --- a/app/src/pages/doctor/DoctorDashboard.jsx +++ b/app/src/pages/doctor/DoctorDashboard.jsx @@ -248,7 +248,7 @@ export default function DoctorDashboard(props) { Date of Vaccination Vaccine - Batch Number + Vaccination Code Dosage Status Validate diff --git a/app/src/pages/doctor/DoctorLogin.jsx b/app/src/pages/doctor/DoctorLogin.jsx index 98ce549..f94204f 100644 --- a/app/src/pages/doctor/DoctorLogin.jsx +++ b/app/src/pages/doctor/DoctorLogin.jsx @@ -7,9 +7,6 @@ import DoctorDashboard from './DoctorDashboard'; import AdminDashboard from '../admin/AdminDashboard'; import { useNavigate } from 'react-router'; - - - const wallets = [ getPhantomWallet(), getSolflareWallet(), @@ -18,20 +15,9 @@ const wallets = [ export function DoctorLogin() { - - const wallet = useWallet(); const navigate = useNavigate(); - -// const navigate = useNavigate(); - -// useEffect(() => { -// if (wallet.connected) { -// navigate('/doctor/dashboard') -// } -// },[wallet.connected]); - if (!wallet.connected) { return (
diff --git a/app/src/pages/passport_holder/PassportHolderDashboard.jsx b/app/src/pages/passport_holder/PassportHolderDashboard.jsx index 077706b..2a81ece 100644 --- a/app/src/pages/passport_holder/PassportHolderDashboard.jsx +++ b/app/src/pages/passport_holder/PassportHolderDashboard.jsx @@ -242,7 +242,7 @@ export default function PassportHolderDashboard() { Date of Vaccination Vaccine - Batch Number + Vaccination Code Dosage Status Validate diff --git a/app/src/pages/passport_holder/PassportHolderLogin.jsx b/app/src/pages/passport_holder/PassportHolderLogin.jsx index 52dc7d8..17f2601 100644 --- a/app/src/pages/passport_holder/PassportHolderLogin.jsx +++ b/app/src/pages/passport_holder/PassportHolderLogin.jsx @@ -17,13 +17,6 @@ export function PassportHolderLogin() { const wallet = useWallet(); const navigate = useNavigate(); - // const navigate = useNavigate(); - - // useEffect(() => { - // if (wallet.connected) { - // navigate('/passport-holder/dashboard') - // } - // },[wallet.connected]); if (!wallet.connected) { return ( diff --git a/app/src/pages/vaccination_camp/VaccinationCampDashboard.jsx b/app/src/pages/vaccination_camp/VaccinationCampDashboard.jsx index 30673e3..f131e28 100644 --- a/app/src/pages/vaccination_camp/VaccinationCampDashboard.jsx +++ b/app/src/pages/vaccination_camp/VaccinationCampDashboard.jsx @@ -259,7 +259,7 @@ export default function VaccinationCampDashboard() { Date of Vaccination Vaccine - Batch Number + Vaccination Code Dosage Status Validate diff --git a/app/src/pages/validation/ValidationDashboard.jsx b/app/src/pages/validation/ValidationDashboard.jsx index 02eb2ab..8017f2a 100644 --- a/app/src/pages/validation/ValidationDashboard.jsx +++ b/app/src/pages/validation/ValidationDashboard.jsx @@ -154,7 +154,7 @@ export default function ValidationDashboard() { Vaccination Data
- +
, firstname: String, lastname: String, date_of_birth: String, license_number: String, licence_issued_date: String, licence_expiry_date: String, business_address: String, business_telephone: String, qualifications: String) -> ProgramResult { let doctor: &mut Account = &mut ctx.accounts.doctor; @@ -39,6 +40,7 @@ pub mod immunopass { Ok(()) } + // function to create/update a vaccination camp pub fn create_vaccination_camp(ctx: Context, registration_number: String, name: String, phone: String, email: String, website: String, opening_times: String, address: String) -> ProgramResult { let vaccination_camp: &mut Account = &mut ctx.accounts.vaccination_camp; @@ -66,6 +68,7 @@ pub mod immunopass { Ok(()) } + // function to create/update a passport holder pub fn create_passport_holder(ctx: Context, firstname: String, lastname: String, date_of_birth: String, gender: String, title: String, address: String, phone: String, place_of_birth: String, nic: String) -> ProgramResult { let genders = vec!["FEMALE", "MALE", "OTHER"]; @@ -78,6 +81,7 @@ pub mod immunopass { passport_holder.lastname = lastname; passport_holder.date_of_birth = date_of_birth.parse().unwrap(); + // check gender if gender.is_empty() { passport_holder.gender = "NOT_SPECIFIED".parse().unwrap(); } else if !genders.contains(&gender.to_uppercase().as_str()) { @@ -106,6 +110,7 @@ pub mod immunopass { Ok(()) } + // function to create a vaccination record pub fn create_vaccination_record(ctx: Context, vaccine: String, notes: String, age: String, weight: String, dosage: String, batch_number: String, doctor: Pubkey, vaccination_camp: Pubkey, passport_holder: Pubkey) -> ProgramResult { let author: &Signer = &ctx.accounts.author; @@ -179,6 +184,7 @@ pub mod immunopass { Ok(()) } + // function to create a validation record pub fn create_validation_record(ctx: Context, record_type: String, record: Pubkey, validator_type: String, validator: Pubkey, status: String, notes: String) -> ProgramResult { let validator_types = vec!["doctor", "vaccination_camp", "passport_holder"]; @@ -192,10 +198,7 @@ pub mod immunopass { if validator.to_bytes().len() == 0 { return Err(ErrorCode::ValidatorNotProvided.into()); } - // check if the validator is a valid type - // if validator != *author.key { - // return Err(ErrorCode::InvalidValidator.into()); - // } + // check if validator type is valid if !validator_types.contains(&validator_type.to_lowercase().as_str()) { return Err(ErrorCode::ValidatorNotFound.into()); @@ -228,6 +231,7 @@ pub mod immunopass { Ok(()) } + // function to check vaccination record validity pub fn check_vaccination_record_validity(ctx: Context) -> ProgramResult { let vaccination_record: &mut Account = &mut ctx.accounts.vaccination_record; @@ -236,8 +240,7 @@ pub mod immunopass { let vc_verification_record: &mut Account = &mut ctx.accounts.vc_verification_record; let ph_verification_record: &mut Account = &mut ctx.accounts.ph_verification_record; - - + // check validity logic if doc_verification_record.status == "invalid".to_uppercase() || vc_verification_record.status == "invalid".to_uppercase() || ph_verification_record.status == "invalid".to_uppercase() { vaccination_record.status = "invalid".to_uppercase(); } else if doc_verification_record.status == "valid".to_uppercase() && vc_verification_record.status == "valid".to_uppercase() && ph_verification_record.status == "valid".to_uppercase() {