# Contact
# Beschreibung
Beinhaltet die Kontakte die Arbeitgeber & Arbeitnehmer via. zwei Suchen schließen.
# altes contact-Model
Functionality- Implementierung: ✅
- Erweiterung:
- kleinere Anpassungen
- Auslagerung der Ausgänge der Kontakte
- ~Company & ~Jobseeker (anstatt ~User)
# old migration
CREATE TABLE `pyou_contacts` (
`contact_uuid` varchar(36) NOT NULL,
`company_user_uuid` varchar(36) DEFAULT NULL,
`jobseeker_user_uuid` varchar(36) DEFAULT NULL,
`contact_init` varchar(36) NOT NULL,
`search_uuid` varchar(36) DEFAULT NULL,
`candidate_uuid` varchar(36) DEFAULT NULL,
`role_involved` varchar(36) DEFAULT NULL,
`able_to_move` tinyint(1) DEFAULT NULL,
`qualification_addition` varchar(255) DEFAULT NULL,
`company_searched_anonymous` tinyint(1) DEFAULT NULL,
`contact_shortdetails` text,
`contact_details` text,
`company_ts_seen` timestamp NULL DEFAULT NULL,
`contact_ts_establishingcontact_company` timestamp NULL DEFAULT NULL,
`contact_ts_receivedapplication_company` timestamp NULL DEFAULT NULL,
`contact_ts_interviewinvitation_company` timestamp NULL DEFAULT NULL,
`contact_ts_success_company` timestamp NULL DEFAULT NULL,
`contact_ts_failed_company` timestamp NULL DEFAULT NULL,
`company_fail_state` varchar(255) DEFAULT NULL,
`company_fail_reason` varchar(255) DEFAULT NULL,
`jobseeker_ts_seen` timestamp NULL DEFAULT NULL,
`contact_ts_establishingcontact_jobseeker` timestamp NULL DEFAULT NULL,
`contact_ts_receivedapplication_jobseeker` timestamp NULL DEFAULT NULL,
`contact_ts_interviewinvitation_jobseeker` timestamp NULL DEFAULT NULL,
`contact_ts_success_jobseeker` timestamp NULL DEFAULT NULL,
`contact_ts_failed_jobseeker` timestamp NULL DEFAULT NULL,
`jobseeker_fail_state` varchar(255) DEFAULT NULL,
`jobseeker_fail_reason` varchar(255) DEFAULT NULL,
`contact_ts_create` timestamp NULL DEFAULT NULL,
`contact_ts_update` timestamp NULL DEFAULT NULL,
`contact_ts_delete` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`contact_uuid`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
# neues Address-Model
Anmerkung
- 🆕
# Model (json)
{
"class": "App\\Models\\Contact",
"database": "mysql",
"table": "contacts",
"policy": null,
"attributes": [
{
"name": "id",
"type": "string(36)",
"increments": false,
"nullable": false,
"default": null,
"unique": true,
"fillable": true,
"hidden": false,
"appended": null,
"cast": null
},
{
"name": "company_id",
"type": "string(36)",
"increments": false,
"nullable": false,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": null
},
{
"name": "jobseeker_id",
"type": "string(36)",
"increments": false,
"nullable": false,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": null
},
{
"name": "init",
"type": "string",
"increments": false,
"nullable": false,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": null
},
{
"name": "search_id",
"type": "string(36)",
"increments": false,
"nullable": false,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": null
},
{
"name": "search_place_id",
"type": "string(36)",
"increments": false,
"nullable": false,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": null
},
{
"name": "candidate_id",
"type": "string(36)",
"increments": false,
"nullable": false,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": null
},
{
"name": "candidate_place_id",
"type": "string(36)",
"increments": false,
"nullable": false,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": null
},
{
"name": "tolerance",
"type": "boolean",
"increments": false,
"nullable": false,
"default": "0",
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": null
},
{
"name": "direct_apply",
"type": "boolean",
"increments": false,
"nullable": false,
"default": "0",
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": null
},
{
"name": "company_satisfied",
"type": "boolean",
"increments": false,
"nullable": true,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": null
},
{
"name": "jobseeker_satisfied",
"type": "boolean",
"increments": false,
"nullable": true,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": null
},
{
"name": "details",
"type": "json",
"increments": false,
"nullable": false,
"default": null,
"unique": false,
"fillable": true,
"hidden": true,
"appended": null,
"cast": "object"
},
{
"name": "company_seen_at",
"type": "datetime",
"increments": false,
"nullable": true,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": "immutable_datetime"
},
{
"name": "jobseeker_seen_at",
"type": "datetime",
"increments": false,
"nullable": true,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": "immutable_datetime"
},
{
"name": "company_deleted_at",
"type": "datetime",
"increments": false,
"nullable": true,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": "immutable_datetime"
},
{
"name": "jobseeker_deleted_at",
"type": "datetime",
"increments": false,
"nullable": true,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": "immutable_datetime"
},
{
"name": "created_at",
"type": "datetime",
"increments": false,
"nullable": true,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": "datetime"
},
{
"name": "updated_at",
"type": "datetime",
"increments": false,
"nullable": true,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": "datetime"
},
{
"name": "deleted_at",
"type": "datetime",
"increments": false,
"nullable": true,
"default": null,
"unique": false,
"fillable": true,
"hidden": false,
"appended": null,
"cast": "datetime"
},
{
"name": "company_has_seen",
"type": null,
"increments": false,
"nullable": null,
"default": null,
"unique": null,
"fillable": true,
"hidden": false,
"appended": false,
"cast": "attribute"
},
{
"name": "jobseeker_has_seen",
"type": null,
"increments": false,
"nullable": null,
"default": null,
"unique": null,
"fillable": true,
"hidden": false,
"appended": false,
"cast": "attribute"
},
{
"name": "company_has_deleted",
"type": null,
"increments": false,
"nullable": null,
"default": null,
"unique": null,
"fillable": true,
"hidden": false,
"appended": false,
"cast": "attribute"
},
{
"name": "jobseeker_has_deleted",
"type": null,
"increments": false,
"nullable": null,
"default": null,
"unique": null,
"fillable": true,
"hidden": false,
"appended": false,
"cast": "attribute"
}
],
"relations": [
{ "name": "jobseeker", "type": "BelongsTo", "related": "App\\Models\\Jobseeker" },
{ "name": "company", "type": "BelongsTo", "related": "App\\Models\\Company" },
{ "name": "search", "type": "BelongsTo", "related": "App\\Models\\Search" },
{ "name": "candidate", "type": "BelongsTo", "related": "App\\Models\\Search" },
{ "name": "searchPlace", "type": "BelongsTo", "related": "App\\Models\\Place" },
{ "name": "candidatePlace", "type": "BelongsTo", "related": "App\\Models\\Place" },
{ "name": "states", "type": "BelongsToManySoft", "related": "App\\Models\\State" },
{ "name": "notes", "type": "HasMany", "related": "App\\Models\\Note" },
{ "name": "outcomes", "type": "HasMany", "related": "App\\Models\\Outcome" },
{ "name": "chat", "type": "HasOne", "related": "App\\Models\\Chat" },
{ "name": "events", "type": "MorphMany", "related": "App\\Models\\Event" },
{ "name": "activities", "type": "MorphMany", "related": "Spatie\\Activitylog\\Models\\Activity" }
],
"observers": [
{ "event": "creating", "observer": ["Closure"] },
{ "event": "created", "observer": ["Closure", "App\\Observers\\ContactObserver@created"] },
{ "event": "updating", "observer": ["Closure"] },
{ "event": "updated", "observer": ["Closure", "App\\Observers\\ContactObserver@updated"] },
{ "event": "deleted", "observer": ["Closure"] },
{ "event": "restored", "observer": ["Closure"] }
]
}
# Beziehungen
- Search - [
candidate()-BelongsTo] - Place - [
candidatePlace()-BelongsTo] - Chat - [
chat()-HasOne] - Company - [
company()-BelongsTo] - Event - [
events()-MorphMany] - Jobseeker - [
jobseeker()-BelongsTo] - Note - [
notes()-HasMany] - Outcome - [
outcome()-HasMany] - Search - [
search()-BelongsTo] - Place - [
place()-BelongsTo] - Sharedmedia - [
sharedmedia()-HasManyThrough] - ContactState - [
states()-BelongsToMany]
# übergeordnetes Thema
2.6 Datenstruktur