コード例 #1
0
            public ImportedTicket(IList <RaffleTicket> originals)
            {
                this.originals = originals;
                Person         = originals.First().Person;
                Account        = Names.DefaultAccount;
                Type           = "Melave Malka Raffle";

                Tickets = ((IListSource) new RowListBinder(Program.Table <RaffleTicket>(), originals.Cast <Row>().ToList())).GetList();

                if (originals.Count > 1)
                {
                    SubType = "tickets #" + originals.Join(", #", t => t.TicketId.ToString(CultureInfo.InvariantCulture));
                }
                else
                {
                    SubType = "ticket #" + originals.First().TicketId.ToString(CultureInfo.InvariantCulture);
                }
                Amount = RaffleTicket.CalcPrice(originals.Count);

                Comments = (originals.Select(t => (t.Comments ?? "").Trim())
                            .Distinct(StringComparer.OrdinalIgnoreCase)
                            .Join(Environment.NewLine)
                            + "\r\n(imported from Rafflizer)").Trim();

                AmountPaid    = RaffleTicket.CalcPrice(originals.Count(t => t.Paid));
                PaymentMethod = AmountPaid > 0 ? "Cash" : "Unpaid";
            }
コード例 #2
0
 ///<summary>Creates tables that should only be loaded at design-time.</summary>
 ///<remarks>At runtime, these tables are loaded when needed.  However, I still want them in the designer.</remarks>
 static void AddDesignTimeTables(DataContext context)
 {
     context.Tables.AddTable(SeatingReservation.CreateTable());
     context.Tables.AddTable(MelaveMalkaInfo.CreateTable());
     context.Tables.AddTable(MelaveMalkaInvitation.CreateTable());
     context.Tables.AddTable(MelaveMalkaSeat.CreateTable());
     context.Tables.AddTable(Caller.CreateTable());
     context.Tables.AddTable(AdReminderEmail.CreateTable());
     context.Tables.AddTable(RaffleTicket.CreateTable());
 }
コード例 #3
0
ファイル: TicketsForm.cs プロジェクト: esn8404/Rafflizer
        private void gridView_CustomSummaryCalculate(object sender, CustomSummaryEventArgs e)
        {
            switch (e.SummaryProcess)
            {
            case CustomSummaryProcess.Start:
                e.TotalValue = 0;
                break;

            case CustomSummaryProcess.Calculate:
                e.TotalValue = (int)e.TotalValue + 1;
                break;

            case CustomSummaryProcess.Finalize:
                e.TotalValue      = RaffleTicket.CalcPrice((int)e.TotalValue);
                e.TotalValueReady = true;
                break;
            }
        }
コード例 #4
0
ファイル: AddPanel.cs プロジェクト: esn8404/Rafflizer
        void AddTicket()
        {
            var idDup = tickets.Rows.FirstOrDefault(t => t.TicketId == ticketId.Value);

            if (idDup != null)
            {
                if (DialogResult.No == XtraMessageBox.Show(
                        "Ticket #" + ticketId.Value + " was already given to " + idDup.Person.VeryFullName + ".\r\nAre you sure you want to add a duplicate ticket?",
                        Dialog.DefaultTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2
                        ))
                {
                    return;
                }
            }

            if (personSelector.SelectedPerson == null)
            {
                return;
            }

            Program.Table <RaffleTicket>().Rows.Add(lastTicket = new RaffleTicket {
                Year      = year,
                Person    = personSelector.SelectedPerson,
                TicketId  = (int)ticketId.Value,
                Paid      = isPaid.Checked,
                Comments  = String.IsNullOrWhiteSpace(comments.Text) ? null : comments.Text,
                DateAdded = DateTime.Now
            });
            InfoMessage.Show("Ticket #" + ticketId.Value + " was registered for " + personSelector.SelectedPerson.VeryFullName
                             + ", " + (isPaid.Checked ? "paid" : "unpaid"));

            if (ModifierKeys == Keys.Shift)
            {
                ticketId.Value = NextID;
                ticketId.Focus();
            }
            else
            {
                personSelector.SelectedPerson = null;                   //The EditValueChanged handler will reset other fields
                personSelector.Focus();
            }
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: esn8404/Rafflizer
        protected override DataSyncContext CreateDataContext()
        {
            var dc = new DataContext();

            dc.Tables.AddTable(Person.CreateTable());
            dc.Tables.AddTable(RaffleTicket.CreateTable());

            var dsc = new DataSyncContext(dc, new SqlCeSqlProvider(FilePath));

            dsc.Tables.AddPrimaryMappings();

            if (!File.Exists(FilePath))
            {
                DB.CreateFile(FilePath, DatabaseFile.SqlCe);
                try {
                    DBManager.SetupDatabase(dsc);
                } catch { File.Delete(FilePath); }
            }

            return(dsc);
        }
コード例 #6
0
ファイル: TicketsForm.cs プロジェクト: esn8404/Rafflizer
        void UpdateStats()
        {
            ticketCount.Caption = tickets.Rows.Count + " Tickets";
            totalValue.Caption  = "Total value: " +
                                  tickets.Rows.GroupBy(t => t.Person, (person, set) => set.Count())
                                  .Sum(c => RaffleTicket.CalcPrice(c))
                                  .ToString("c0", CultureInfo.CurrentCulture)

                                  + "; paid: "
                                  + tickets.Rows.Where(t => t.Paid)
                                  .GroupBy(t => t.Person, (person, set) => set.Count())
                                  .Sum(c => RaffleTicket.CalcPrice(c))
                                  .ToString("c0", CultureInfo.CurrentCulture);

            IList <int> idHoles;

            if (tickets.Rows.Count == 0)
            {
                idHoles = new int[0];
            }
            else
            {
                idHoles = Enumerable.Range(1, tickets.Rows.Max(t => t.TicketId))
                          .Except(tickets.Rows.Select(t => t.TicketId))
                          .ToList();
            }

            if (idHoles.Count == 0)
            {
                holeMessage.Caption = "No Holes";
                holeMessage.Appearance.ForeColor = Color.Green;
            }
            else if (idHoles.Count == 1)
            {
                holeMessage.Appearance.ForeColor = Color.Red;
                holeMessage.Caption = "Ticket #" + idHoles.First().ToString(CultureInfo.CurrentCulture) + " is missing";
            }
            else
            {
                holeMessage.Appearance.ForeColor = Color.Red;
                var message = new StringBuilder();

                for (int i = 0; i < idHoles.Count;)
                {
                    var start = idHoles[i];
                    int size  = 1;
                    while (++i < idHoles.Count && idHoles[i] == start + size)
                    {
                        size++;
                    }

                    message.Append(message.Length == 0 ? "Holes: " : ", ");

                    message.Append(start);
                    if (size == 2)
                    {
                        message.Append(", ").Append(start + 1);
                    }
                    else if (size > 2)
                    {
                        message.Append(" - ").Append(start + size - 1);
                    }
                }

                holeMessage.Caption = message.ToString();
            }
        }
コード例 #7
0
 public void RuffleFreeState(RaffleTicket view)
 {
     //view.State = new RulfeFreeButtonState();
 }
コード例 #8
0
 public void RuffleBuyState(RaffleTicket view)
 {
     //view.ButtonText.text = "BUY TICKETS";
     //view.PanelBuy.SetActive(true);
     //Debug.Log("BuyPanel");
 }
コード例 #9
0
 public void RuffleFreeState(RaffleTicket view)
 {
     //view.ButtonText.text = "FREE TICKETS";
     //Debug.Log("Free");
 }
コード例 #10
0
 public void RuffleBuyState(RaffleTicket view)
 {
     //view.State = new RufleBuyButtonState();
 }