Acme Help Desk Tutorial - Part 1

May 19, 2020 ยท View on GitHub

About this tutorial:

Domain Model

HelpDeskDomainModel

HelpDeskDomainModel.drawio open with draw.io

Domain Entities

* denotes required fields.

TicketStatus : Enum { Open, In Progress, On Hold, Close }

Organization : FullAuditedAggregateRoot<Guid>
PropertyTypeMinMaxExamples
Numberstring?50CID-00001, CUST-00001, BW-000001
*Namestring50Acme, ABC, Volo
Streetstring?501 Acme Way
Citystring?50
Statestring?50
Zipcodestring?15
Phonestring?15
Faxstring?15
Notesstring?1024

AppUser : FullAuditedAggregateRoot<Guid>

PropertyTypeMinMaxExamples
*OrganizationsICollection<Organization>

Tag : FullAuditedAggregateRoot<Guid>

PropertyTypeMinMaxExamples
*Textstring50

Ticket : FullAuditedAggregateRoot<Guid>

PropertyTypeMinMaxExamples
*TicketNumberintSequencial Number
*CreatedDateDateTime
*CreatorUserIdGuidNavigation Property
AssigneeUserIdGuid?Navigation Property
*StatusenumOpen
*Titlestring250
*Textstring1024
*TagsICollection<Tag>
CloserDateDateTime?
CloserUserIdGuid?Navigation Property
ReopenDateDateTime?
ReopendUserIdGuid?Navigation Property
AnswersICollection<Answer>
*AnswerCountint
AcceptedAnswerIdGuid?Navigation Property
LastAnswerIdGuid?Navigation Property

Answer : FullAuditedAggregateRoot<Guid>

PropertyTypeMinMaxExamples
*TicketIdGuidNavigation Property
*CreatedDateDateTime
*CreatorUserIdGuidNavigation Property
*TextstringNavigation Property
*Votesint
AnswerRepliesICollection<Reply>
*AnswerReplyCountint

AnswerReply : FullAuditedAggregateRoot<Guid>

PropertyTypeMinMaxExamples
*AnswerIdGuidNavigation Property
*CreatedDateDateTime
*CreatorUserIdGuidNavigation Property
*TextstringNavigation Property
*Votesint