import { Str, Uid, Attr, Bool, Num } from 'pinia-orm/dist/decorators' import ApiModel from '~/models/ApiModel' import { Assert, IdLess, IriEncoded } from '~/models/decorators' import Country from '~/models/Core/Country' import File from '~/models/Core/File' import TypeOfPractice from '~/models/Organization/TypeOfPractice' /** * AP2i Model : Freemium / Organization * * */ @IdLess() export default class Organization extends ApiModel { static entity = 'freemium/organization' @Uid() declare id: number | string | null @Str(null) @Assert({ nullable: false, max: 128 }) declare name: string | null @Str('ARTISTIC_PRACTICE_ONLY') @Assert({ nullable: false }) declare principalType: string | null @Str('ASSOCIATION_LAW_1901') @Assert({ nullable: false }) declare legalStatus: string | null @Str(null) declare description: string | null @Str(null) @Assert({ nullable: false, type: 'email' }) declare email: string | null @Str(null) declare tel: string | null @Str(null) declare streetAddress: string | null @Str(null) declare streetAddressSecond: string | null @Str(null) declare streetAddressThird: string | null @Str(null) declare postalCode: string | null @Str(null) declare addressCity: string | null @IriEncoded(Country) @Attr(null) declare addressCountry: number @Num(null) declare latitude: number | null @Num(null) declare longitude: number | null @Str(null) @Assert({ max: 255, type: 'url' }) declare facebook: string @Str(null) @Assert({ max: 255, type: 'url' }) declare twitter: string @Str(null) @Assert({ max: 255, type: 'url' }) declare youtube: string @Str(null) @Assert({ max: 255, type: 'url' }) declare instagram: string @Bool(true) declare portailVisibility: boolean @Attr(null) @IriEncoded(File) declare logo: number | null @Attr(() => []) @IriEncoded(TypeOfPractice) declare typeOfPractices: Array | null }