using System;
using System.Collections.Generic;
using System.Text;
using Ubik.Engine.Client;
namespace StoresAndStockPricing.Model{
/// <summary>
/// Retail stores are facilities at which sales transactions take place.
/// </summary>
public class RetailStore : Facility
{
private TrackedProperty<DateTime> _openingDate;
private TrackedProperty<DateTime?> _closingDate;
private VirtualCollection<RetailStoreGroup> _groups;
private void CreateProperties()
{
_openingDate = new TrackedProperty<DateTime>(this, "OpeningDate");
_closingDate = new TrackedProperty<DateTime?>(this, "ClosingDate");
_groups = new VirtualCollection<RetailStoreGroup>(this, "DirectlyIncludedRetailStores", VirtualCollectionMultiplicity.ManyToMany);
}
protected RetailStore(Session session)
: base(session)
{
CreateProperties();
}
public RetailStore(Session session, string name, DateTime openingDate)
: base(session, name)
{
CreateProperties();
_openingDate.Reset(openingDate);
RetailStoreGroup allStores = session.SelectOne<RetailStoreGroup>("Function.IsSystemFunction = true && isnull(Parent)");
RetailStoreGroup mySystemGroup = new RetailStoreGroup(session, name, allStores);
mySystemGroup.Insert();
mySystemGroup.DirectlyIncludedRetailStores.Add(this);
}
public DateTime OpeningDate
{
get
{
return _openingDate.Value;
}
set
{
_openingDate.Value = value;
}
}
public DateTime? ClosingDate
{
get
{
return _closingDate.Value;
}
set
{
if (value != null && _openingDate.Value > value)
throw new ArgumentException(RetailStoreResources.ClosingDateMustNotBeEarlierThanOpeningDate);
_closingDate.Value = value;
}
}
public ICollection<RetailStoreGroup> Groups
{
get
{
return _groups;
}
}
public RetailStoreGroup SystemGroup
{
get
{
return Session.SelectOne<RetailStoreGroup>(
"Function.IsSystemFunction = true && DirectlyIncludedRetailStores[Identity = {"
+ Identity.ToString() + "}]");
}
}
}
}
|