# AyCode.Models @project { type = "framework" } Shared DTOs (Data Transfer Objects) and view models for the AyCode platform. Bridges entities and interfaces into client/server-transferable models. ## Folder Structure | Folder | Purpose | |---|---| | `Enums/` | Message-related enums (content types, message types) | | `Messages/` | Email message model (currently inactive) | | `Users/` | User DTOs: minimal, standard, detail variants + password DTOs | ## Root Files - **`AcModelDtoBase.cs`** — Abstract base DTO with `Guid Id`. Generic version `AcModelDtoBase` adds `CreateMainEntity()` for DTO-to-entity instantiation via reflection. ## Key Files ### Enums/ - **`MessageContentType.cs`** — Enum: Text, Image, Video, Audio, File, Location, Contact, Sticker, Gif, VoiceNote, System. - **`MessageTypesEnum.cs`** — Enum: email(1), sms(2), push(3), chat(4). ### Users/ - **`AcUserModelDtoMinBase.cs`** — Minimal user DTO with `UserDto` and `ProfileDto`. `CopyUserDtoValuesToUser()` for reverse mapping. - **`AcUserModelDtoBase.cs`** — Extends min base with `ServiceProviders` and `UserToServiceProviders` lists. - **`AcUserModelDtoDetailBase.cs`** — Full detail DTO: populates email, phone, address, timestamps. Bidirectional mapping via `CopyUserDtoValuesToUser()`. - **`AcPasswordDtoBase.cs`** — Base with `NewPassword` property. - **`AcChangePasswordDto.cs`** — Extends password base with `UserId` + `OldPassword`. - **`AcForgotPasswordDto.cs`** — Extends password base with `Email`. ## Dependencies | Dependency | Purpose | |---|---| | `AyCode.Core` | Core types | | `AyCode.Entities` | Entity base classes for DTO-entity mapping | | `AyCode.Interfaces` | Interface contracts implemented by DTOs |