uda-connector 0.1.6

A Rust lib to access UDA (unicycling registration software)
Documentation
use derive_getters::Getters;
use serde::{Deserialize, Serialize};
use uda_dto::uda_member::UdaMember;

#[derive(Debug, Getters, Serialize, Deserialize, PartialEq)]
pub struct ImportedUdaMember {
    #[serde(rename = "Id")]
    id: u16,
    #[serde(rename = "Manual Organization Membership#")]
    manual_organization_membership: Option<String>,
    #[serde(rename = "System Organization Membership#")]
    system_organization_membership: Option<String>,
    #[serde(rename = "First Name")]
    first_name: String,
    #[serde(rename = "Last Name")]
    last_name: String,
    #[serde(rename = "Birthday")]
    birthday: String,
    #[serde(rename = "Address Line1")]
    address_line: String,
    #[serde(rename = "City")]
    city: String,
    #[serde(rename = "State")]
    state: Option<String>,
    #[serde(rename = "Zip")]
    zip: String,
    #[serde(rename = "Country")]
    country: String,
    #[serde(rename = "Phone")]
    phone: Option<String>,
    #[serde(rename = "Email")]
    email: String,
    #[serde(rename = "Club")]
    club: Option<String>,
    #[serde(rename = "Confirmed already a member")]
    confirmed: bool,
}

impl From<ImportedUdaMember> for UdaMember {
    fn from(imported_member: ImportedUdaMember) -> Self {
        UdaMember::new(
            imported_member.id,
            imported_member
                .manual_organization_membership
                .or(imported_member.system_organization_membership),
            imported_member.first_name,
            imported_member.last_name,
            imported_member.email,
            imported_member.club,
            imported_member.confirmed,
        )
    }
}

#[cfg(any(test, feature = "test"))]
impl ImportedUdaMember {
    #[allow(clippy::too_many_arguments)]
    pub fn new(
        id: u16,
        manual_organization_membership: Option<String>,
        system_organization_membership: Option<String>,
        first_name: String,
        last_name: String,
        birthday: String,
        address_line: String,
        city: String,
        state: Option<String>,
        zip: String,
        country: String,
        phone: Option<String>,
        email: String,
        club: Option<String>,
        confirmed: bool,
    ) -> Self {
        Self {
            id,
            manual_organization_membership,
            system_organization_membership,
            first_name,
            last_name,
            birthday,
            address_line,
            city,
            state,
            zip,
            country,
            phone,
            email,
            club,
            confirmed,
        }
    }
}