using System;

using BeWo.Data.Entities;

using BS.Shared;
using BS.Shared.DataContracts;

namespace BeWo.Report.ReportObjects
{
	public class KassenbelegRO : AbstractBeWoReportObject<KassenbelegRO>
	{
		public string   Titel         { get; set; }
		public decimal  Betrag        { get; set; }
		public DateTime Belegdatum    { get; set; }
		public string   Beguenstigter { get; set; }
        public string   Notiz         { get; set; }

		public static KassenbelegRO Create(BargeldtransaktionDC transaktion, BeWoEntityBase beguenstigter)
		{
            var beleg = new KassenbelegRO
            {
                Titel      = string.Format("{0}zahlungsbeleg", (transaktion.Zahlungstyp == Zahlungstyp.Einzahlung ? "Ein" : "Aus")),
                Betrag     = transaktion.Betrag != null ? transaktion.Betrag.Value : 0m,
                Belegdatum = transaktion.Zahlungsdatum != null ? transaktion.Zahlungsdatum.Value : DateTime.Now,
                Notiz      = transaktion.Notice
            };

            if (beguenstigter != null)
            {
                if (beguenstigter is Customer)
                {
                    var customer = (Customer)beguenstigter;

                    beleg.Beguenstigter = customer.Person.FirstNameLastName;
                }
            }

			return beleg;
		}
	}
}
