// Copyright (C) 2022 FCS Frede's Computer Services. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU Affero General Public License as // published by the Free Software Foundation, either version 3 of the // License, or (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Affero General Public License for more details. // // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see [https://www.gnu.org/licenses/agpl-3.0.en.html] // using System; using System.ComponentModel.DataAnnotations; using System.Text.Json.Serialization; namespace Wonky.Entity.DTO; public class CompanyDto { /// /// Name /// [Required(ErrorMessage = "Navn skal udfyldes")] [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string Name { get; set; } = ""; /// /// Alert /// [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string Note { get; set; } = ""; /// /// Crm note /// public string CrmNotes { get; set; } = ""; /// /// Postal code /// [Required(ErrorMessage = "Postnummer skal udfyldes")] [MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string ZipCode { get; set; } = ""; /// /// City name /// [Required(ErrorMessage = "Bynavn skal udfyldes")] [MaxLength(30, ErrorMessage = "Du kan højst bruge 30 tegn")] public string City { get; set; } = ""; /// /// VAT number /// [MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string VatNumber { get; set; } = ""; /// /// Company Id /// public string CompanyId { get; set; } = ""; /// /// Sales representative entity Id /// public string SalesRepId { get; set; } = ""; /// /// SalesRep ERP identifier /// public string SalesRep { get; set; } = ""; /// /// Business Central entity Id /// public string BcId { get; set; } = ""; /// /// Office address 1 /// [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string Address1 { get; set; } = ""; /// /// Office address 2 /// [MaxLength(50, ErrorMessage = "Du kan højst bruge 50 tegn")] public string Address2 { get; set; } = ""; /// /// Account number /// [MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string Account { get; set; } = ""; /// /// Phone number /// [MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string Phone { get; set; } = ""; /// /// Mobile phone number /// [MaxLength(20, ErrorMessage = "Du kan højst bruge 20 tegn")] public string Mobile { get; set; } = ""; /// /// Office email /// [MaxLength(80, ErrorMessage = "Du kan højst bruge 80 tegn")] public string Email { get; set; } = ""; /// /// Attention /// [MaxLength(100, ErrorMessage = "Du kan højst bruge 100 tegn")] public string Attention { get; set; } = ""; /// /// ERP block state /// /// Empty string - Customer not blocked public string Blocked { get; set; } = ""; /// /// Country code ISO /// public string CountryCode { get; set; } = ""; /// /// Last visit /// public string LastVisit { get; set; } = "2010-01-01"; /// /// Next visit /// public string NextVisit { get; set; } = "2010-01-01"; /// /// Interval between visits /// /// between 1 and 52 (inclusive) default value is 8 [Range(1, 52, ErrorMessage = "Angiv interval mellem 1 og 52 uger")] public int Interval { get; set; } = 8; /// /// Value indication if company has shutdown /// /// 0 or 1 public int HasFolded { get; set; } /// /// User value for hiding the company is out of business /// /// 0 or 1 public int IsHidden { get; set; } /// /// Value indicating the VAT number is valid /// /// 0 or 1 public int ValidVat { get; set; } /// /// Value indicating if VAT number has changed and should be written to ERP record /// /// 0 or 1 public int UpdateErpVat { get; set; } /// /// Date for last sync of product history /// public string HistorySync { get; set; } = ""; public int IsDirty { get; set; } = 0; /// /// Virtual property indicating if timespan is within the defined interval /// /// true/false public virtual bool ValidDateSpan() { var notAllowed = new List {"2010-01-01", "1970-01-01", "0001-01-01"}; if (notAllowed.Contains(LastVisit) || notAllowed.Contains(NextVisit)) return false; return DateTime.Parse(LastVisit) < DateTime.Parse(NextVisit); } }