Added communication to member profile
This commit is contained in:
parent
23846347fa
commit
3b64124d5c
|
@ -1,8 +1,8 @@
|
|||
-- Your SQL goes here
|
||||
create table communication_types
|
||||
(
|
||||
id uuid default uuid_generate_v1() not null,
|
||||
name text not null,
|
||||
constraint pk___communication_types___id
|
||||
primary key (id)
|
||||
type_id uuid default uuid_generate_v1() not null
|
||||
constraint pk___communication_types___id
|
||||
primary key,
|
||||
type_name text not null
|
||||
);
|
|
@ -1,7 +1,7 @@
|
|||
-- Your SQL goes here
|
||||
create table communication_targets
|
||||
(
|
||||
id uuid default uuid_generate_v1() not null
|
||||
target_id uuid default uuid_generate_v1() not null
|
||||
constraint pk___communication_targets___id
|
||||
primary key,
|
||||
entity_id uuid not null
|
||||
|
|
|
@ -138,6 +138,29 @@
|
|||
{{/each}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="card bg-light mb-3">
|
||||
<div class="card-header">Kommunikation</div>
|
||||
<div class="card-body">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">Typ</th>
|
||||
<th scope="col">Wert</th>
|
||||
<th scope="col">Beschreibung</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{#each communication_targets}}
|
||||
<tr>
|
||||
<td><input type="text" value="{{type_name}}" readonly size="8"></td>
|
||||
<td><input type="text" value="{{value}}" class="form-control" readonly></td>
|
||||
<td><input type="text" value="{{description}}" class="form-control" readonly></td>
|
||||
</tr>
|
||||
{{/each}}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="card bg-light mb-3">
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
use crate::database::controller::connector::establish_connection;
|
||||
use crate::database::model::member_communication::CommunicationTarget;
|
||||
use crate::database::model::member_licenses::RawMemberLicense;
|
||||
use crate::helper::settings::Settings;
|
||||
use crate::modules::member_management::model::licenses::MemberLicense;
|
||||
use diesel::pg::types::sql_types::Uuid;
|
||||
use diesel::serialize::IsNull;
|
||||
use diesel::{sql_query, ExpressionMethods, JoinOnDsl, QueryDsl, RunQueryDsl};
|
||||
use rocket::State;
|
||||
|
||||
pub fn get_member_communication(
|
||||
settings: &State<Settings>,
|
||||
member_entity_id: uuid::Uuid,
|
||||
) -> Vec<CommunicationTarget> {
|
||||
use crate::schema::communication_targets::dsl::*;
|
||||
use crate::schema::communication_types::dsl::*;
|
||||
|
||||
let connection = establish_connection(settings);
|
||||
|
||||
let data: Result<Vec<CommunicationTarget>, diesel::result::Error> = communication_targets
|
||||
.inner_join(communication_types)
|
||||
.filter(entity_id.eq(member_entity_id))
|
||||
.select((target_id, type_name, value, description))
|
||||
.load(&connection);
|
||||
|
||||
match data {
|
||||
Ok(data) => data,
|
||||
Err(e) => {
|
||||
error!(
|
||||
"Couldn't get communication targets for {}: {}",
|
||||
member_entity_id, e
|
||||
);
|
||||
vec![]
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,5 +1,5 @@
|
|||
use crate::database::controller::connector::establish_connection;
|
||||
use crate::database::model::qualifications::RawQualificationCategory;
|
||||
use crate::database::model::member_qualifications::RawQualificationCategory;
|
||||
use crate::helper::settings::Settings;
|
||||
use crate::modules::member_management::model::qualifications::{
|
||||
Qualification, QualificationCategory,
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
#[derive(Serialize, Deserialize, Queryable, Clone)]
|
||||
pub struct CommunicationTarget {
|
||||
pub(crate) target_id: uuid::Uuid,
|
||||
pub(crate) type_name: String,
|
||||
pub(crate) value: String,
|
||||
pub(crate) description: Option<String>,
|
||||
}
|
|
@ -1,7 +1,8 @@
|
|||
pub mod addresses;
|
||||
pub mod entities;
|
||||
pub mod groups;
|
||||
pub mod member_communication;
|
||||
pub mod member_licenses;
|
||||
pub mod member_qualifications;
|
||||
pub mod members;
|
||||
pub mod qualifications;
|
||||
pub mod users;
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
use crate::database::controller::addresses::get_addresses_for_entity_only_one_allowed;
|
||||
use crate::database::controller::member_communication::get_member_communication;
|
||||
use crate::database::controller::member_licenses::get_member_licenses;
|
||||
use crate::database::controller::member_qualifications::get_qualifcation_categories;
|
||||
use crate::database::controller::members::get_raw_member_by_uuid;
|
||||
|
@ -49,6 +50,7 @@ pub fn handle_view(
|
|||
let address = get_addresses_for_entity_only_one_allowed(settings, raw_member.entity_id);
|
||||
let licenses = get_member_licenses(settings, raw_member.entity_id);
|
||||
let qualification_categories = get_qualifcation_categories(settings, raw_member.entity_id);
|
||||
let communication_targets = get_member_communication(settings, raw_member.entity_id);
|
||||
|
||||
return Ok(Template::render(
|
||||
"module_member_management_profile",
|
||||
|
@ -60,6 +62,7 @@ pub fn handle_view(
|
|||
address,
|
||||
licenses,
|
||||
qualification_categories,
|
||||
communication_targets,
|
||||
readonly: true,
|
||||
sidebar,
|
||||
},
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
use crate::database::model::addresses::Address;
|
||||
use crate::database::model::member_communication::CommunicationTarget;
|
||||
use crate::database::model::members::RawMember;
|
||||
use crate::helper::sitebuilder::model::general::{Footer, Header};
|
||||
use crate::helper::sitebuilder::model::sidebar::Sidebar;
|
||||
|
@ -28,6 +29,7 @@ pub struct MemberModuleProfile {
|
|||
pub address: Option<Address>,
|
||||
pub licenses: Vec<MemberLicense>,
|
||||
pub qualification_categories: Vec<QualificationCategory>,
|
||||
pub communication_targets: Vec<CommunicationTarget>,
|
||||
pub readonly: bool,
|
||||
pub sidebar: Sidebar,
|
||||
}
|
||||
|
|
|
@ -39,8 +39,8 @@ table! {
|
|||
use diesel::sql_types::*;
|
||||
use diesel_geometry::sql_types::*;
|
||||
|
||||
communication_targets (id) {
|
||||
id -> Uuid,
|
||||
communication_targets (target_id) {
|
||||
target_id -> Uuid,
|
||||
entity_id -> Uuid,
|
||||
com_type -> Uuid,
|
||||
value -> Text,
|
||||
|
@ -52,9 +52,9 @@ table! {
|
|||
use diesel::sql_types::*;
|
||||
use diesel_geometry::sql_types::*;
|
||||
|
||||
communication_types (id) {
|
||||
id -> Uuid,
|
||||
name -> Text,
|
||||
communication_types (type_id) {
|
||||
type_id -> Uuid,
|
||||
type_name -> Text,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue