websitepanel/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Base/Ecommerce/Service.cs
2014-04-01 19:42:10 -04:00

579 lines
12 KiB
C#

// Copyright (c) 2014, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
using System.Collections.Specialized;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
using WebsitePanel.EnterpriseServer;
namespace WebsitePanel.Ecommerce.EnterpriseServer
{
[Serializable]
public class Service
{
public const string SERVICE_ITEM_TYPE = "ECSERVICE";
public const int SERVICE_ITEM_SEVERITY = 2;
private int serviceId;
private int customerId;
private string username;
private int resellerId;
private string contractId;
private int parentId;
private string serviceName;
private int typeId;
private ServiceStatus status;
private DateTime created;
private DateTime modified;
public int ServiceId
{
get { return this.serviceId; }
set { this.serviceId = value; }
}
public int CustomerId
{
get { return this.customerId; }
set { this.customerId = value; }
}
public int ResellerId
{
get { return this.resellerId; }
set { this.resellerId = value; }
}
public string ContractId
{
get { return this.contractId; }
set { this.contractId = value; }
}
public string Username
{
get { return this.username; }
set { this.username = value; }
}
public int ParentId
{
get { return this.parentId; }
set { this.parentId = value; }
}
public string ServiceName
{
get { return this.serviceName; }
set { this.serviceName = value; }
}
public int TypeId
{
get { return this.typeId; }
set { this.typeId = value; }
}
public ServiceStatus Status
{
get { return this.status; }
set { this.status = value; }
}
public System.DateTime Created
{
get { return this.created; }
set { this.created = value; }
}
public System.DateTime Modified
{
get { return this.modified; }
set { this.modified = value; }
}
}
[Serializable]
public class HostingPackageSvc : Service
{
#region Fields
private int productId;
private int planId;
private int packageId;
private UserRole userRole;
private PackageStatus initialStatus;
private int svcCycleId;
private string cycleName;
private string billingPeriod;
private int periodLength;
private decimal setupFee;
private decimal recurringFee;
private string currency;
#endregion
#region Properties
public int ProductId
{
get { return this.productId; }
set { this.productId = value; }
}
public int PlanId
{
get { return this.planId; }
set { this.planId = value; }
}
public int PackageId
{
get { return this.packageId; }
set { this.packageId = value; }
}
public WebsitePanel.EnterpriseServer.UserRole UserRole
{
get { return this.userRole; }
set { this.userRole = value; }
}
public WebsitePanel.EnterpriseServer.PackageStatus InitialStatus
{
get { return this.initialStatus; }
set { this.initialStatus = value; }
}
public int SvcCycleId
{
get { return svcCycleId; }
set { svcCycleId = value; }
}
public string CycleName
{
get { return this.cycleName; }
set { this.cycleName = value; }
}
public string BillingPeriod
{
get { return this.billingPeriod; }
set { this.billingPeriod = value; }
}
public int PeriodLength
{
get { return this.periodLength; }
set { this.periodLength = value; }
}
public decimal SetupFee
{
get { return this.setupFee; }
set { this.setupFee = value; }
}
public decimal RecurringFee
{
get { return this.recurringFee; }
set { this.recurringFee = value; }
}
public string Currency
{
get { return this.currency; }
set { this.currency = value; }
}
#endregion
}
[Serializable]
public class HostingAddonSvc : Service
{
#region Fields
private int productId;
private int planId;
private int packageAddonId;
private int quantity;
private bool recurring;
private bool dummyAddon;
private int svcCycleId;
private string cycleName;
private string billingPeriod;
private int periodLength;
private decimal setupFee;
private decimal cyclePrice;
private string currency;
#endregion
#region Properties
public int ProductId
{
get { return this.productId; }
set { this.productId = value; }
}
public int PlanId
{
get { return this.planId; }
set { this.planId = value; }
}
public int PackageAddonId
{
get { return this.packageAddonId; }
set { this.packageAddonId = value; }
}
public int Quantity
{
get { return this.quantity; }
set { this.quantity = value; }
}
public bool Recurring
{
get { return this.recurring; }
set { this.recurring = value; }
}
public bool DummyAddon
{
get { return this.dummyAddon; }
set { this.dummyAddon = value; }
}
public int SvcCycleId
{
get { return this.svcCycleId; }
set { this.svcCycleId = value; }
}
public string CycleName
{
get { return this.cycleName; }
set { this.cycleName = value; }
}
public string BillingPeriod
{
get { return this.billingPeriod; }
set { this.billingPeriod = value; }
}
public int PeriodLength
{
get { return this.periodLength; }
set { this.periodLength = value; }
}
public decimal SetupFee
{
get { return this.setupFee; }
set { this.setupFee = value; }
}
public decimal CyclePrice
{
get { return this.cyclePrice; }
set { this.cyclePrice = value; }
}
public string Currency
{
get { return this.currency; }
set { this.currency = value; }
}
#endregion
}
[Serializable]
public class DomainNameSvc : Service, IKeyValueBunch
{
public const string SPF_UPDATE_NS_ACTION = "UPDATE_NS";
public const string SPF_TRANSFER_ACTION = "TRANSFER";
public const string SPF_REGISTER_ACTION = "REGISTER";
#region Fields
private int productId;
private int domainId;
private string providerName;
private int pluginId;
private string fqdn;
private int svcCycleId;
private string cycleName;
private string billingPeriod;
private int periodLength;
private decimal setupFee;
private decimal recurringFee;
private string currency;
private string propertyNames;
private string propertyValues;
#endregion
#region Properties
public int ProductId
{
get { return this.productId; }
set { this.productId = value; }
}
public int DomainId
{
get { return this.domainId; }
set { this.domainId = value; }
}
public string ProviderName
{
get { return this.providerName; }
set { this.providerName = value; }
}
public int PluginId
{
get { return this.pluginId; }
set { this.pluginId = value; }
}
public string Fqdn
{
get { return this.fqdn; }
set { this.fqdn = value; }
}
public int SvcCycleId
{
get { return this.svcCycleId; }
set { this.svcCycleId = value; }
}
public string CycleName
{
get { return this.cycleName; }
set { this.cycleName = value; }
}
public string BillingPeriod
{
get { return this.billingPeriod; }
set { this.billingPeriod = value; }
}
public int PeriodLength
{
get { return this.periodLength; }
set { this.periodLength = value; }
}
public decimal SetupFee
{
get { return this.setupFee; }
set { this.setupFee = value; }
}
public decimal RecurringFee
{
get { return this.recurringFee; }
set { this.recurringFee = value; }
}
public string Currency
{
get { return this.currency; }
set { this.currency = value; }
}
[XmlIgnore]
public string PropertyNames
{
get { return this.propertyNames; }
set { this.propertyNames = value; }
}
[XmlIgnore]
public string PropertyValues
{
get { return this.propertyValues; }
set { this.propertyValues = value; }
}
#endregion
private NameValueCollection properties;
public string[][] KeyValueArray;
[XmlIgnore]
NameValueCollection Properties
{
get
{
//
SyncCollectionsState(true);
//
return properties;
}
}
public string this[string settingName]
{
get
{
return Properties[settingName];
}
set
{
// set setting
Properties[settingName] = value;
//
SyncCollectionsState(false);
}
}
private void SyncCollectionsState(bool inputSync)
{
if (inputSync)
{
if (properties == null)
{
// create new dictionary
properties = new NameValueCollection();
// fill dictionary
if (KeyValueArray != null)
{
foreach (string[] pair in KeyValueArray)
properties.Add(pair[0], pair[1]);
}
}
}
else
{
// rebuild array
KeyValueArray = new string[Properties.Count][];
//
for (int i = 0; i < Properties.Count; i++)
{
KeyValueArray[i] = new string[] { Properties.Keys[i], Properties[Properties.Keys[i]] };
}
}
}
public string[] GetAllKeys()
{
if (Properties != null)
return Properties.AllKeys;
return null;
}
}
[Serializable]
public class ServiceHistoryRecord
{
private string cycleName;
private string billingPeriod;
private int periodLength;
private decimal setupFee;
private decimal recurringFee;
private string currency;
private DateTime startDate;
private DateTime endDate;
public string CycleName
{
get { return cycleName; }
set { cycleName = value; }
}
public string BillingPeriod
{
get { return billingPeriod; }
set { billingPeriod = value; }
}
public int PeriodLength
{
get { return periodLength; }
set { periodLength = value; }
}
public decimal SetupFee
{
get { return setupFee; }
set { setupFee = value; }
}
public decimal RecurringFee
{
get { return recurringFee; }
set { recurringFee = value; }
}
public string Currency
{
get { return currency; }
set { currency = value; }
}
public DateTime StartDate
{
get { return startDate; }
set { startDate = value; }
}
public DateTime EndDate
{
get { return endDate; }
set { endDate = value; }
}
}
public enum ServiceStatus
{
Ordered = 0,
Active = 1,
Suspended = 2,
Cancelled = 3
};
}