From 43ea6fe6aa0509d918ad380bd7501c601ed8b022 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Matu=C5=A1ka?= Date: Fri, 23 Sep 2022 13:39:19 +0200 Subject: [PATCH] Customer names fix (#13) * Remake Customer Model and relevant services * Improve Ticket service * Fix problem with Customer name * Fix owner --- src/models/Customer.model.ts | 15 +++++++++++++-- src/models/Ticket.model.ts | 4 ++-- src/services/Customer.service.ts | 10 ++-------- src/services/Ticket.service.ts | 19 +++++++++++++++---- src/templates/new-reservation.ejs | 6 +++--- src/templates/new-reservation.txt | 6 +++--- 6 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/models/Customer.model.ts b/src/models/Customer.model.ts index e39b6d1..0ea8f72 100644 --- a/src/models/Customer.model.ts +++ b/src/models/Customer.model.ts @@ -10,7 +10,7 @@ export class CustomerModel { _id: string; @Property() - name: CustomerNameSchema; + names: CustomerNameSchema[]; @Property() @Required() @@ -19,6 +19,17 @@ export class CustomerModel { } export class CustomerUpdateModel { - name?: CustomerNameUpdateSchema; + names?: CustomerNameUpdateSchema[]; email?: string; +} + +export class CustomerEasyTicketModel { + + @Property() + name: CustomerNameSchema; + + @Property() + @Required() + @Unique() + email: string; } \ No newline at end of file diff --git a/src/models/Ticket.model.ts b/src/models/Ticket.model.ts index 3943978..59ad594 100644 --- a/src/models/Ticket.model.ts +++ b/src/models/Ticket.model.ts @@ -1,6 +1,6 @@ import { Model, ObjectID, Ref } from "@tsed/mongoose"; import { Default, Enum, Format, Property, Required } from "@tsed/schema"; -import { CustomerModel } from "./Customer.model"; +import { CustomerEasyTicketModel, CustomerModel } from "./Customer.model"; import { TimeModel } from "./Time.model"; import { YearModel } from "./Year.model"; @@ -59,7 +59,7 @@ export class TicketUpdateModel { export class TicketEasyModel { @Property() - buyer: CustomerModel; + buyer: CustomerEasyTicketModel; // Team from YearModel.times @Property() diff --git a/src/services/Customer.service.ts b/src/services/Customer.service.ts index e91cdc0..35efea7 100644 --- a/src/services/Customer.service.ts +++ b/src/services/Customer.service.ts @@ -42,14 +42,8 @@ export class CustomerService { .exec(); if (obj) { - if (update.name) { - if (update.name.first) { - obj.name.first = update.name.first; - } - - if (update.name.last) { - obj.name.last = update.name.last; - } + if (update.names) { + obj.names = update.names; } if (update.email) { diff --git a/src/services/Ticket.service.ts b/src/services/Ticket.service.ts index 3128206..9213c8d 100644 --- a/src/services/Ticket.service.ts +++ b/src/services/Ticket.service.ts @@ -42,9 +42,20 @@ export class TicketService { let customer = await this.customerModel.findOne({ email: obj.buyer.email.trim() }); let owner; if (customer) { - owner = customer; + const foundName = customer.names.some(name => { + return (name.first == obj.buyer.name.first) && (name.last == obj.buyer.name.last); + }) + if (!foundName) { + customer.names.push(obj.buyer.name); + owner = await this.customerService.update(customer.id, customer); + } else { + owner = customer; + } } else { - owner = await this.customerService.save(obj.buyer); + let buyer = new CustomerModel(); + buyer.names = [obj.buyer.name]; + buyer.email = obj.buyer.email; + owner = await this.customerService.save(buyer); } // Get active year @@ -58,9 +69,9 @@ export class TicketService { }) year = await year.save(); year = await year - .populate("times") + .populate(["times"]) //@ts-ignore - .execPopulate(); + // .execPopulate(); } /** diff --git a/src/templates/new-reservation.ejs b/src/templates/new-reservation.ejs index a01b415..9852150 100644 --- a/src/templates/new-reservation.ejs +++ b/src/templates/new-reservation.ejs @@ -12,8 +12,8 @@

zde je potvrzení Vaší rezervace:

ID: <%= reservation._id %>
- Křestní jméno: <%= reservation.owner.name.first %>
- Příjmení: <%= reservation.owner.name.last %>
+ Křestní jméno: <%= reservation.owner.names[reservation.owner.names.length-1].first %>
+ Příjmení: <%= reservation.owner.names[reservation.owner.names.length-1].last %>
Email: <%= reservation.owner.email %>
Čas: <%= reservation.time.name %>

@@ -42,4 +42,4 @@

- \ No newline at end of file + diff --git a/src/templates/new-reservation.txt b/src/templates/new-reservation.txt index 0201524..646717d 100644 --- a/src/templates/new-reservation.txt +++ b/src/templates/new-reservation.txt @@ -3,8 +3,8 @@ Dobrý den, zde je potvrzení Vaší rezervace: ID: <%= reservation._id %> -Křestní jméno: <%= reservation.owner.name.first %> -Příjmení: <%= reservation.owner.name.last %> +Křestní jméno: <%= reservation.owner.names[reservation.owner.names.length-1].first %> +Příjmení: <%= reservation.owner.names[reservation.owner.names.length-1].last %> Email: <%= reservation.owner.email %> Čas: <%= reservation.time.name %> @@ -25,4 +25,4 @@ S přáním hezkého dne, Pořadatelé Pohádkového lesa v Rudici Email: pohles@rudickamladez.cz -www pohles.rudickamladez.cz \ No newline at end of file +www pohles.rudickamladez.cz