示例#1
0
        public List <string> Fix(SplitFixModel splitFixModel)
        {
            var eventSubeventSubscriptionService = new EventSubscriptionService();

            var eventSubscriptions = eventSubeventSubscriptionService.GetAll(splitFixModel.EventID);

            // Get Current Event
            var ev = Get(splitFixModel.EventID);

            ev.Price = splitFixModel.Amount;

            // update Event
            Update(ev);

            // Generate Debts
            var userList    = new List <string>();
            var debtService = new DebtService();

            foreach (var eventSubscription in eventSubscriptions)
            {
                userList.Add(eventSubscription.UserName);
                // Debt Creation
                debtService.Create(new Debt()
                {
                    AmountDue = ev.Price,
                    EventID   = splitFixModel.EventID,
                    UserID    = eventSubscription.UserID
                });
            }

            return(userList);
        }
示例#2
0
        public List <string> Split(SplitFixModel splitFixModel)
        {
            var eventSubeventSubscriptionService = new EventSubscriptionService();

            // Get User List
            var users            = eventSubeventSubscriptionService.GetAll(splitFixModel.EventID);
            var participantCount = users.Count;

            if (participantCount == 0)
            {
                throw HttpResponseExceptionHelper.Create("No one has subscribed to the event", HttpStatusCode.BadRequest);
            }

            splitFixModel.Amount = splitFixModel.Amount / participantCount;

            return(Fix(splitFixModel));
        }
示例#3
0
        public override void Execute()
        {
            var endpoint = "https://slack.com/api/chat.postMessage";

            var eventService = new EventService();

            var eventId = eventService
                          .GetEventByCreatorId(this.Parameters[0], CommandRequest.User_ID).EventID;

            SplitFixModel model = new SplitFixModel()
            {
                EventID = eventId,
                Amount  = double.Parse(this.Parameters[1])
            };

            WebClient    client  = new WebClient();
            string       text    = "";
            EventService service = new EventService();

            if (this.Type == CommandType.Fix)
            {
                var users     = service.Split(model);
                var userArray = string.Join(",", users);

                text = string.Format("FIX_EVENT_IOU {0} {1} {2} {3} [{4}]", model.Amount, this.Parameters[0], this.Parameters[2], CommandRequest.Channel_ID, userArray);
            }

            else if (this.Type == CommandType.Split)
            {
                var users     = service.Split(model);
                var userArray = string.Join(",", users);

                text = string.Format("SPLIT_EVENT_IOU {0} {1} {2} {3} [{4}]", model.Amount, this.Parameters[0], this.Parameters[2], CommandRequest.Channel_ID, userArray);
            }

            var response = client.UploadValues(endpoint, "POST", new NameValueCollection()
            {
                { "token", "xoxp-48206941781-48203038320-48284423348-ea63295ae1" },
                { "as_user", "true" },
                { "channel", "@ioubot" },
                { "text", text }
            });

            this.CommandResponse.Text = "Event is now active!";
        }
示例#4
0
 public List <string> FixEvent(SplitFixModel splitFixModel)
 {
     return(EventService.Fix(splitFixModel));
 }
示例#5
0
 public List <string> SplitEvent(SplitFixModel splitFixModel)
 {
     return(EventService.Split(splitFixModel));
 }