using System; using System.Collections.Generic; using Tanshu.Accounts.Contracts; using Tanshu.Accounts.Entities.Auth; using NHibernate.Mapping.ByCode.Conformist; using NHibernate.Mapping.ByCode; namespace Tanshu.Accounts.Entities { public class Voucher { protected Voucher() { Kots = new List(); Settlements = new List(); } public Voucher(User user) : this() { this.Date = null; this.User = user; VoucherType = VoucherType.Regular; } public Voucher(User user, Customer customer, FoodTable table, Waiter waiter, bool printed, bool isVoid, string narration) : this(user) { Customer = customer; Table = table; Waiter = waiter; Printed = printed; Void = isVoid; Narration = narration; VoucherType = VoucherType.Regular; } public virtual Guid VoucherID { get; set; } public virtual DateTime? Date { get; set; } public virtual int Pax { get; set; } public virtual User User { get; set; } public virtual DateTime CreationDate { get; set; } public virtual DateTime LastEditDate { get; set; } public virtual int? BillID { get; set; } public virtual FoodTable Table { get; set; } public virtual Waiter Waiter { get; set; } public virtual Customer Customer { get; set; } public virtual IList Settlements { get; set; } public virtual string Narration { get; set; } public virtual bool Void { get; set; } public virtual string VoidReason { get; set; } public virtual bool Printed { get; set; } public virtual VoucherType VoucherType { get; set; } public virtual int KotID { get; set; } public virtual IList Kots { get; set; } public virtual IList Reprints { get; set; } } public class VoucherMap : ClassMapping { public VoucherMap() { Table("Vouchers"); Schema("dbo"); Lazy(true); SqlInsert(@"exec VoucherInsert ?,?,?,?,?,?,?,?,?,?,?"); SqlUpdate(@"exec VoucherUpdate ?,?,?,?,?,?,?,?,?,?,?"); Id(x => x.VoucherID, map => map.Generator(Generators.GuidComb)); Property(x => x.Date, map => { map.NotNullable(true); map.Generated(PropertyGeneration.Always); }); Property(x => x.Pax); Property(x => x.VoucherType, map => map.NotNullable(true)); Property(x => x.Narration); Property(x => x.CreationDate, map => { map.NotNullable(true); map.Generated(PropertyGeneration.Insert); }); Property(x => x.LastEditDate, map => { map.NotNullable(true); map.Generated(PropertyGeneration.Always); }); Property(x => x.BillID, map => map.Generated(PropertyGeneration.Always)); Property(x => x.Void, map => map.NotNullable(true)); Property(x => x.VoidReason); Property(x => x.Printed, map => map.NotNullable(true)); Property(x => x.KotID, map => { map.NotNullable(true); map.Generated(PropertyGeneration.Insert); }); ManyToOne(x => x.User, map => { map.Column("UserID"); map.NotNullable(true); map.Cascade(Cascade.None); }); ManyToOne(x => x.Table, map => { map.Column("TableID"); map.NotNullable(true); map.Cascade(Cascade.None); }); ManyToOne(x => x.Waiter, map => { map.Column("WaiterID"); map.NotNullable(true); map.Cascade(Cascade.None); }); ManyToOne(x => x.Customer, map => { map.Column("CustomerID"); map.NotNullable(true); map.Cascade(Cascade.None); }); Bag(x => x.Kots, colmap => { colmap.Key(x => x.Column("VoucherID")); colmap.Inverse(true); colmap.OrderBy(o => o.Date); }, map => { map.OneToMany(); }); Bag(x => x.Reprints, colmap => { colmap.Key(x => x.Column("VoucherID")); colmap.Inverse(true); }, map => { map.OneToMany(); }); Bag(x => x.Settlements, colmap => { colmap.Key(x => x.Column("VoucherID")); colmap.Inverse(true); }, map => { map.OneToMany(); }); } } }