public void Action(AddItemInput message) { CheckItemInput(message); ItemModel item = null; if (message is AddGuestInput) { decimal amount = AmountConverter.Convert(message.Amount, false); item = new GuestModel(EventService.AddGuest(CurrentEvent.Id, null, message.Name, amount)); CurrentEvent.Guests.Add((GuestModel)item); Queue(ToItemOutput(item, ItemType.Guest)); } else if (message is AddExpenseInput) { decimal amount = AmountConverter.Convert(message.Amount, true); item = new ExpenseModel(EventService.AddExpense(CurrentEvent.Id, null, message.Name, amount)); CurrentEvent.Expenses.Add((ExpenseModel)item); Queue(ToItemOutput(item, ItemType.Expense)); } else { throw new InvalidCastException($"{message.GetType().Name} is not handled"); } CalculateOutcome(); QueueItemsCount(); QueueItemsAmount(); QueueOutcomeAvailable(); QueueOutcomeSummary(); QueueOutcomeGuests(); QueueItemSaved(); QueueEnableReset(); }
private string ProcessNumber(decimal number) { if (number < 0) { throw new ArgumentException("The number should be positive."); } AmountConverter converter = new AmountConverter(); ulong integer = (ulong)Truncate(number); // extracts the integer part of the number ulong decimals = (ulong)((number - integer) * 100); // extracts the decimals of the number and converts it to integer string result = ($"{converter.Convert(integer)} dollar{(integer > 1 ? "s" : "")}" + $"{(decimals > 0 ? $" and {converter.Convert(decimals)} cent{(decimals > 1 ? "s" : "")}" : "")}"); return(result); }
public override IEnumerable <ValidationError> Validate(PropertyInfo property, object value) { IList <ValidationError> retval = null; retval = new List <ValidationError>(); if (!string.IsNullOrEmpty((string)value)) { try { AmountConverter.Convert((string)value, GetAttribute().GreaterThanZero); } catch (AmountConvertionException e) { retval.Add(new AmountValidationError(e.Reason)); } } return(retval); }
public void Action(EditItemInput message) { CheckItemInput(message); ItemModel modelItem = null; Item updatedItem = null; if (message is EditGuestInput) { decimal amount = AmountConverter.Convert(message.Amount, false); modelItem = CurrentEvent.Guests.Single(x => x.Id == message.ItemId); updatedItem = EventService.UpdateGuest(CurrentEvent.Id, modelItem.Id, message.Name, amount); modelItem.Map(updatedItem); Queue(ToItemOutput(modelItem, ItemType.Guest)); } else if (message is EditExpenseInput) { decimal amount = AmountConverter.Convert(message.Amount, false); modelItem = CurrentEvent.Expenses.Single(x => x.Id == message.ItemId); updatedItem = EventService.UpdateExpense(CurrentEvent.Id, modelItem.Id, message.Name, amount); modelItem.Map(updatedItem); Queue(ToItemOutput(modelItem, ItemType.Expense)); } else { throw new InvalidCastException($"{message.GetType().Name} is not handled"); } if (modelItem != null) { CalculateOutcome(); QueueItemsCount(); QueueItemsAmount(); QueueOutcomeAvailable(); QueueOutcomeSummary(); QueueOutcomeGuests(); QueueItemSaved(); } }