/// <summary> /// Constructor for Buying or selling an Item /// </summary> /// <param name="Initiator">Initiator of the action.</param> /// <param name="Customer">Customer, who bought the article.</param> /// <param name="Date">DateTime when the action was initiated.</param> /// <param name="Amount">Change amount</param> /// <param name="ID">Change number</param> public Change(Person Initiator, Person Customer, DateTime Date, int Amount, int ID) { this.Initiator = Initiator.ID; this.Customer = Customer.ID; this.Date = Date; this.Amount = Amount; this.ID = ID; }
/// <summary> /// Constructor for buying an item. The constructor will remove one unit of the item. /// </summary> /// <param name="item">Item to buy</param> /// <param name="price">Paid price for the item</param> /// <param name="Initiator">Person, who sold the item</param> /// <param name="Customer">Person, who bought the item</param> /// <param name="ID">Item ID</param> public Consumed(Item item, decimal price, Person Initiator, Person Customer, int ID) { ItemID = item.ID; Value = price; Type = ConsumeType.Purchase; ItemChangeID = item.Remove(Initiator, Customer); Date = DateTime.Now; Comment = ""; this.ID = ID; }
/// <summary> /// Constructor /// </summary> /// <param name="amount">Amount of money to pay in, pay out or for special payment.</param> /// <param name="Initiator">Initiator who did the pay in</param> /// <param name="ID">Item ID</param> /// <param name="comment">Comment, fill out if special payment is intended.</param> public Consumed(decimal amount, Person Initiator, int ID, string comment = "") { ItemID = new Guid(); Value = amount; if (comment == "") { if (amount < 0) Type = ConsumeType.Inpayment; else Type = ConsumeType.Payout; Comment = EnumHelper.GetDescription(Type); } else { Type = ConsumeType.SpecialPayment; if (amount < 0) throw new Exception("Amount must not be negative with special payment."); Comment = comment; } this.ID = ID; Date = DateTime.Now; ItemChangeID = -1; }
private void CheckPassword() { wrongLoginMsg.Visibility = Visibility.Collapsed; wrongRightsMsg.Visibility = Visibility.Collapsed; try { if(App.Persons.Count<1) { FoundUser = App.CurrentVendor; Close(); return; } IList<Person> pl = new List<Person>(); foreach (Person x in App.Persons) { if(x.Name.Trim() == NameBox.Text.Trim() || x.Initials == NameBox.Text.Trim().ToUpper()) { pl.Add(x); continue; } if(x is Korpo && !string.IsNullOrEmpty(((Korpo)x).Vulgo) && ((Korpo)x).Vulgo == NameBox.Text.Trim()) { pl.Add(x); continue; } } FoundUser = null; foreach(Person p in pl) if(CompareHashes(GetHash(PasswordBox), p.Password)) { if (!(p.Rights.Worker || p.Rights.Moderator || p.Rights.Cashier || p.Rights.BeerAdmin || p.Rights.Administrator)) { wrongRightsMsg.Visibility = System.Windows.Visibility.Visible; } else { FoundUser = p; Close(); return; } } throw new Exception(); } catch (Exception e) { wrongLoginMsg.Visibility = System.Windows.Visibility.Visible; } }
public Special(Person p) : base() { GetProperties(p); }
private bool IsAlreadyInList(Person p) { return Persons.FirstOrDefault(x => x.Model == p) == default(PersonViewModel) ? false : true; }
internal void Remove(Person p) { RemoveViewModelFromList(p); Model.Remove(p); RaisePropertyChanged("Count"); }
public void SpecialPayment(decimal amount, Person Initiator, string Comment) { if (amount <= 0) throw new ArgumentOutOfRangeException("Der Wert muss positiv sein."); Guthaben -= amount; History.Add(new Consumed(amount, Initiator, History.Count>0?History.Last().ID+1:0, Comment)); }
public bool Pay(Items.Item item, decimal factor, Person Initiator) { decimal amount = PaysBuingPrice ? item.PriceBuying : item.PriceSelling * factor; Guthaben -= amount; History.Add(new Consumed(item, amount, Initiator, this, History.Count>0 ? History.Last().ID+1 : 0)); return true; }
public static void SendReminderToUser(Person p) { MailMessage mail = new MailMessage(); mail.From = new MailAddress(MailAddress); mail.To.Add(new MailAddress(p.Email)); mail.Subject = "Reminder: Unterschreitung deines Mindestguthabens"; mail.Body = SetValuesInPlaceHolders(File.ReadAllText(MailFolder + @"\standardReminder.txt", Encoding.Default), p); // Can set to false, if you are sending pure text. SendMailNow(mail); }
/// <summary> /// Funktion zum Verkaufen. /// </summary> /// <param name="Initiator">Verkäufer</param> /// <param name="Customer">Käufer</param> /// <param name="Amount">Anzahl</param> public int Remove(Person Initiator, Person Customer, uint Amount) { Change c = new Change(Initiator, Customer, DateTime.Now, -Convert.ToInt32(Amount), Changes.Count > 0 ? Changes.Last().ID + 1 : 0); Changes.Add(c); UpdateStock(-Convert.ToInt32(Amount)); Log.WriteInformation(Initiator.Name + " sold " + Amount.ToString() + " of " + this.Name + " to " + Customer.Name); if (ItemRemoved != null) ItemRemoved(this, new ChangeEventArgs(c)); return c.ID; }
/// <summary> /// Standard Strichelfunktion, entfernt 1 Item aus der Liste /// </summary> /// <param name="Initiator">Verkäufer</param> /// <param name="Customer">Käufer</param> public int Remove(Person Initiator, Person Customer) { return Remove(Initiator, Customer, 1); }
/// <summary> /// Entfernt ein Item aus dem Stock /// </summary> /// <param name="Initiator">Verantwortlicher für die Änderung</param> public int Remove(Person Initiator) { return Remove(Initiator, 1); }
/// <summary> /// Fügt eine gewünschte Anzahl zum Stock hinzu. /// </summary> /// <param name="Initiator">Verantwortlicher für die Änderung</param> /// <param name="Amount">Anzahl der Items</param> public void Add(Person Initiator, uint Amount) { Changes.Add(new Change(Initiator, DateTime.Now, Convert.ToInt32(Amount), Changes.Count>0? Changes.Last().ID+1 : 0)); UpdateStock(Convert.ToInt32(Amount)); Log.WriteInformation(Initiator.Name + " added " + Amount.ToString() + " " + this.Name); }
/// <summary> /// Fügt ein Item dem Stock hinzu /// </summary> /// <param name="Initiator">Verantwortlicher für die Änderung</param> public void Add(Person Initiator) { Add(Initiator, 1); }
public static void SendReminderToUserAsync(Person p) { Task.Run(() => { lock (sendLock) { SendReminderToUser(p); } }); }
internal static void SendTestMail(Person p) { MailMessage mail = new MailMessage(); mail.From = new MailAddress(MailAddress); mail.To.Add(new MailAddress(p.Email)); mail.Subject = "Testmail"; mail.Body = "Testmail"; SendMailNow(mail); }
/// <summary> /// Clone Constructor. /// </summary> /// <param name="p">Person to clone</param> public Person(Person origin) { GetProperties(origin); }
/// <summary> /// Replaces the values in the string with the information by the person using a "$Token|Format$" Syntax. The Tokens are the Property names of the person. /// </summary> /// <param name="s">strings where the tokens should be replaced.</param> /// <param name="p"></param> /// <returns></returns> private static string SetValuesInPlaceHolders(string s, Person p, Dictionary<string, object> additionalValues = null) { try { s = regIf.Replace(s, delegate(Match m) { string compare = m.Groups[1].Value; Match cm = regComparer.Match(compare); string left = cm.Groups[1].Value; dynamic leftValue = p.GetType().GetProperty(left).GetValue(p); string right = cm.Groups[3].Value; dynamic rightValue = CastOtherValue(right, leftValue); string comparer = cm.Groups[2].Value; string replacement = ""; switch (comparer) { case "<": replacement = leftValue < rightValue ? m.Groups[2].Value : m.Groups[3].Value; break; case ">": replacement = leftValue > rightValue ? m.Groups[2].Value : m.Groups[3].Value; break; case "<=": replacement = leftValue <= rightValue ? m.Groups[2].Value : m.Groups[3].Value; break; case ">=": replacement = leftValue >= rightValue ? m.Groups[2].Value : m.Groups[3].Value; break; case "=": replacement = leftValue == rightValue ? m.Groups[2].Value : m.Groups[3].Value; break; case "<>": replacement = leftValue != rightValue ? m.Groups[2].Value : m.Groups[3].Value; break; default: throw new InvalidOperationException("Not a valid comparer"); } return SetValuesInPlaceHolders(replacement, p, additionalValues); }); s = regToken.Replace(s, delegate(Match m) { string[] values = m.Groups[1].Value.Split('|'); object repValue; switch (values[0]) { case "CurrentDate": repValue = DateTime.Now; break; default: try { repValue = p.GetType().GetProperty(values[0]).GetValue(p); } catch { if (additionalValues == null) return m.Value; repValue = additionalValues[values[0]]; } break; } return FormatValue(values, repValue); }); } catch (Exception e) { if (DebugMode) { StringBuilder sb = new StringBuilder(); sb.AppendLine("Konnte Token nicht finden."); sb.AppendLine("Erlaubte Token:"); foreach (PropertyInfo pi in p.GetType().GetProperties()) sb.AppendLine(pi.Name); MessageBox.Show(sb.ToString(), "Fehler beim Versenden der Test Email.", System.Windows.MessageBoxButton.OK, System.Windows.MessageBoxImage.Asterisk); } else Log.WriteErrorFromException("The Method MailScheduler.SetValuesInPlaceholders threw an exception.", e); } return s; }
public void PayoutMoney(decimal amount, Person Initiator) { if (amount <= 0) throw new ArgumentOutOfRangeException("Der Wert muss positiv sein."); Guthaben -= amount; History.Add(new Consumed(amount, Initiator, History.Count != 0 ? History.Last().ID + 1 : 0)); }
public PersonEventArgs(Person person = null) { this.Person = person; Index = -1; }
internal void Add(Person p) { Model.Add(p); AddViewModelToList(p); RaisePropertyChanged("Count"); }
public PersonEventArgs(Person person, int index) { this.Person = person; Index = index; }
private void AddViewModelToList(Person p) { Persons.Add(new PersonViewModel(p)); }
private void RemovePersonFromPresentList(Person p) { // Remove from PresentList AllPersons.Add(p); PresentPersons.Remove(p); int foundIndex = -1; // remove Timer try { if(logoutTimers[p.ID]!=null) { logoutTimers[p.ID].Stop(); logoutTimers[p.ID].Tick -= logoutTimer_Tick; logoutTimers.Remove(p.ID); } logoutTimers.Remove(p.ID); } catch { Log.WriteDebug("Could not remove Timer"); } // Remove from saved list for (int i = 0; i < LoggedInUsers.Count; i++) if (LoggedInUsers[i].Contains(p.ID.ToString())) { foundIndex = i; break; } if (foundIndex<0) { Log.WriteDebug("No valid user Timer to remove found"); return; } LoggedInUsers.RemoveAt(foundIndex); Bierstrichler.Properties.Settings.Default.Save(); Log.WriteInformation(App.CurrentVendor.Name + " removed " + p.Name + " from Present List."); }
private void RemoveViewModelFromList(Person p) { try { Persons.Remove(Persons.First(x => x.Model == p)); } catch { } }
public PersonViewModel(Person Model) { this.Model = Model; BeerCharts.ChartsUpdated += BeerCharts_ChartsUpdated; App.CurrentVendorChanged += App_CurrentVendorChanged; }