Files
BusinessMgr-2019/SaBusMgrStandardBase/Base/Data/SbmRepositoryPopulationData.cs
T
2025-02-17 17:44:30 +00:00

226 lines
7.3 KiB
C#

using Sarand.BusinessMgr.Net.Standard.Base.App;
using Sarand.Net.Standard.Base.Bus;
using Sarand.Net.Standard.Base.Core;
using Sarand.Net.Standard.Base.ReferenceData;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Sarand.BusinessMgr.Net.Standard.Base.Data
{
//=======================================================================
/// <summary>
/// Organisation and User info for Repository initialisation.
/// </summary>
public class SbmRepositoryPopulationData
{
//-------------------------------------------------------------------
public SbmRepositoryPopulationData() { }
//-------------------------------------------------------------------
// Definitions.
// Repository configuration
public class RepositoryConfigurationData
{
}
// Owner Organisation configuration
public class OwnerConfigurationData
{
}
// User Account.
public class UserAccount
{
public SysId AffiliateIdOwner { get; set; }
public String FirstName { get; set; }
public String LastName { get; set; }
public String Email { get; set; }
public String MemberCode { get; set; }
/// <summary>
/// User (security) code defaults to Email if not specified.
/// </summary>
public String UserCode { get; set; }
public String Password { get; set; }
public String SecurityGroupCode { get; set; }
}
public class BaseData
{
public SysId Id { get; set; }
public String Notes { get; set; }
public SaStatus Status { get; set; }
}
// Contacts.
public class AffiliateData : BaseData
{
protected AffiliateData(Sbm.AffiliateType type) { this.Type = type; }
public Sbm.AffiliateType Type { get; }
// Addresses.
public List<AddressData> Addresses { get; } = new List<AddressData>();
// Associations - Customer.
public CustomerData Customer { get; private set; }
public void SetCustomer(String code)
{
Customer = new CustomerData() { Code = code };
}
public void ClearCustomer() { Customer = null; }
public String CustomerCode { get { return Customer?.Code ?? ""; } set { if (Customer == null) { Customer = new CustomerData(); } Customer.Code = value; } }
// Associations - Supplier.
public SupplierData Supplier { get; private set; }
public void SetSupplier(String code)
{
Supplier = new SupplierData() { Code = code };
}
public void ClearSupplier() { Supplier = null; }
public String SupplierCode { get { return Supplier?.Code ?? ""; } set { if (Supplier == null) { Supplier = new SupplierData(); } Supplier.Code = value; } }
// Associations - Member.
public MemberData Member { get; private set; }
public void SetMember(String code, String role)
{
Member = new MemberData() { Code = code, Role = role };
}
public void ClearMember() { Member = null; }
public String MemberCode { get { return Member?.Code ?? ""; } set { if (Member == null) { Member = new MemberData(); } Member.Code = value; } }
public String MemberRole { get { return Member?.Role ?? ""; } set { if (Member == null) { Member = new MemberData(); } Member.Role = value; } }
}
public class IndividualData : AffiliateData
{
public IndividualData() : base(Sbm.AffiliateType.Individual) { }
public String Title { get; set; }
public String Initials { get; set; }
public String FirstName { get; set; }
public String LastName { get; set; }
public String Email { get; set; }
public String PhoneMain { get; set; }
public String PhoneMobile { get; set; }
}
public class OrganisationData : AffiliateData
{
protected OrganisationData(Sbm.AffiliateType type) : base(type) { }
public String Name { get; set; }
public String Abbr { get; set; }
public String Nature { get; set; }
public String Contact { get; set; }
public String PhoneMain { get; set; }
public String PhoneAlt { get; set; }
public String VatReg { get; set; }
public String CompanyNo { get; set; }
public String Website { get; set; }
}
public class CommercialOrganisationData : OrganisationData
{
public CommercialOrganisationData() : base(Sbm.AffiliateType.Commercial) { }
}
public class CharityOrganisationData : OrganisationData
{
public CharityOrganisationData() : base(Sbm.AffiliateType.Charity) { }
}
// Addresses.
public class AddressData : BaseData
{
protected AddressData(Sbm.AddressType type)
{
this.Type = type;
}
public Sbm.AddressType Type { get; }
public String Line1 { get; set; }
public String Line2 { get; set; }
public String Line3 { get; set; }
public String City { get; set; }
public String Province { get; set; }
public String Postcode { get; set; }
public String Country { get; set; }
}
// Associations.
public class AssociationData : BaseData
{
protected AssociationData(Sbm.AssociationType type)
{
this.Type = type;
}
public Sbm.AssociationType Type { get; }
public String Code { get; set; }
public String Location { get; set; }
public String Role { get; set; }
public String PhoneMain { get; set; }
}
public class CustomerData : AssociationData
{
public CustomerData() : base(Sbm.AssociationType.Customer) { }
}
public class SupplierData : AssociationData
{
public SupplierData() : base(Sbm.AssociationType.Supplier) { }
}
public class MemberData : AssociationData
{
public MemberData() : base(Sbm.AssociationType.Member) { }
}
// Commodities.
public class CommodityData : BaseData
{
protected CommodityData(Sbm.CommodityType type)
{
this.Type = type;
}
public Sbm.CommodityType Type { get; }
public String Code { get; set; }
public String Caption { get; set; }
public decimal SalePrice { get; set; }
public SaUomType SaleUnitType { get; set; } = SaUomType.Pack_Each;
}
public class StockCommodityData : CommodityData
{
public StockCommodityData() : base(Sbm.CommodityType.Stock) { }
}
public class NonStockCommodityData : CommodityData
{
public NonStockCommodityData() : base(Sbm.CommodityType.NonStock) { }
}
public class ServiceCommodityData : CommodityData
{
public ServiceCommodityData() : base(Sbm.CommodityType.Service)
{
SaleUnitType = SaUomType.Time_Hour;
}
}
//-------------------------------------------------------------------
// Properties.
/// <summary>Repository initialisation data.</summary>
public SbmRepositoryInitialisationData InitData { get; } = new SbmRepositoryInitialisationData();
public SysId AffiliateIdOrganisation { get { return InitData.Organisation.AffiliateId; } }
/// <summary>Repository congiruation options.</summary>
public RepositoryConfigurationData RepositoryConfiguration { get; } = new RepositoryConfigurationData();
/// <summary>Owner configuration options.</summary>
public OwnerConfigurationData OwnerConfiguration { get; } = new OwnerConfigurationData();
/// <summary>Individuals.</summary>
public List<IndividualData> Individuals { get; } = new List<IndividualData>();
/// <summary>Organisations.</summary>
public List<OrganisationData> Organisations { get; } = new List<OrganisationData>();
/// <summary>Commodities.</summary>
public List<CommodityData> Commodities { get; } = new List<CommodityData>();
//-------------------------------------------------------------------
}
//=======================================================================
}