public ActionResult Create(CustomerCreate model)
        {
            var test = new EventListItem();

            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var service = CreateCustomerService();



            if (service.CreateCustomer(model))
            {
                TempData["SaveResult"] = "Customer was successfully created.";
                return(RedirectToAction("Index"));
            }

            ModelState.AddModelError("", "Customer cannot be created.");


            if (model.EventId != test.EventId)
            {
                ModelState.AddModelError("", "You must enter a valid event id.");
            }

            return(View(model));
        }
Пример #2
0
        public ITrigger[] getTriggers(string eventName)
        {
            EventListItem eventItem = _eventList.FirstOrDefault(ei => ei.eventName == eventName);

            if (eventItem == null)
            {
                return(new ITrigger[0]);
            }
            return(eventItem.triggerList.Select(ti => ti.trigger).ToArray());
        }
Пример #3
0
 public ApiResponse AddEventListItem(string Id, [FromBody] EventListItem item)
 {
     try
     {
         _spListService.AddEventListItem(Id, item);
         return(ApiUtil.CreateSuccessfulResult());
     }
     catch (Exception e)
     {
         return(ApiUtil.CreateFailResult(e.ToString()));
     }
 }
Пример #4
0
        public static List <EventListItem> eshortDetails(CalendarService calendarService)
        {
            // Initialise the short details list to display multiple events.
            List <EventListItem> eventList = new List <EventListItem>();

            // Iterate through the events
            foreach (var eventItem in calendarService.Events.List("primary").Execute().Items)
            {
                // To handle prepEvents errors, makes sure only future events (or currently occuring events) are stored.
                if (eventItem.End.DateTime > DateTime.Now)
                {
                    // Grab start date & time of the event.
                    DateTime datetime = DateTime.Parse(eventItem.Start.DateTimeRaw);
                    // Grab first part of timezone.
                    string timezone = TimeZone.CurrentTimeZone.StandardName.Substring(0, TimeZone.CurrentTimeZone.StandardName.IndexOf(' '));
                    // If we're in Daylight savings we'll add +01:00 to the timezone.
                    if (TimeZone.CurrentTimeZone.IsDaylightSavingTime(datetime))
                    {
                        timezone = string.Join("+", timezone, "1:00");
                    }
                    else
                    {
                        timezone = timezone.PadRight(8, ' ');
                    }
                    // Grab the event summary.
                    string summary = eventItem.Summary.ToString();
                    // We want to fit the summary to a 35 character space, padding with spaces where needed.
                    int stringlength = summary.Length;
                    if (stringlength < 35)
                    {
                        summary = summary.PadRight(35, ' ');
                    }
                    else if (stringlength > 35)
                    {
                        summary = summary.Substring(0, 33);
                        // If the summary is too long, we show there's more by replacing the last two characters with dots.
                        summary = summary.PadRight(35, '.');
                    }
                    // Create and event entry for the list of events and set the parameters.
                    EventListItem entry = new EventListItem();
                    entry.eSummary = summary;
                    entry.eDate    = datetime.ToShortDateString().Replace('/', '-');
                    entry.eTime    = datetime.ToShortTimeString() + " " + timezone;
                    //  Add the entry to the list.
                    eventList.Add(entry);
                }
            }
            // Sort the list by date (soonest first).
            eventList.Sort((x, y) => x.eDate.CompareTo(y.eDate));
            // Return the event list.
            return(eventList);
        }
Пример #5
0
        public async Task <List <EventListItem> > ListEvents()
        {
            var relBlacklist = await _relations.GetRelations(RelationshipStatus.Blacklisted, RelationDirection.IamRecipient);

            var relFriends = await _relations.GetRelations(RelationshipStatus.Accepted);

            var blacklistedowners = relBlacklist.Select(r => r.UserId);
            var friendsOwners     = relFriends.Select(r => r.UserId);
            var usr = await GetCurrentUser();

            List <EventListItem> list = new List <EventListItem>();
            var allevents             = await _db.Events.Include(p => p.Owner).ToListAsync();



            //on filtre les events:
            // - ceux organisés par des organisateur qui ne m'on pas blacklist
            // - les sorties privées dont l'organisateur est un ami
            // - mes propres sorties
            var filteredevents = allevents.Where(e => blacklistedowners.All(t => t != e.Owner.Id) &&
                                                 (!e.IsPrivate || friendsOwners.Any(f => f == e.Owner.Id) ||
                                                  e.Owner.Id == usr.Id));

            foreach (var evt in filteredevents)
            {
                var parts = await _db.Participations.Include(p => p.Event).Where(f => f.Event.Id == evt.Id).CountAsync();

                var display = new EventListItem
                {
                    Date            = evt.Date,
                    EventId         = evt.Id,
                    MaxParticipants = evt.MaxSeats,
                    IsPrivate       = evt.IsPrivate,
                    Time            = evt.Time,
                    Participants    = parts,
                    Title           = evt.Title,
                    Owner           = evt.Owner.Pseudo,
                    OwnerId         = evt.Owner.Id
                };


                list.Add(display);
            }

            return(list.OrderByDescending(g => g.Date).ThenByDescending(g => g.Time).ToList());
        }
Пример #6
0
        public bool remove(string eventName, ITrigger trigger)
        {
            EventListItem eventItem = _eventList.FirstOrDefault(ei => ei.eventName == eventName);

            if (eventItem == null)
            {
                return(false);
            }
            else if (eventItem.triggerList.RemoveAll(ti => ti.trigger == trigger) > 0)
            {
                logger?.log("Trigger", "注销触发器" + trigger);
                return(true);
            }
            else
            {
                return(false);
            }
        }
Пример #7
0
        public void AddEventListItem(string Id, EventListItem item)
        {
            var eventData = item;

            using (ClientContext context = _sharepointContextProvider.GetSharepointContextFromUrl(APIResource.SHAREPOINT_CONTEXT + "/sites/FOS/"))
            {
                Web web       = context.Web;
                var loginName = item.eventHost;
                //var loginName = "i:0#.f|membership|" + item.eventHost;
                //string email = eventData.eventHost;
                //PeopleManager peopleManager = new PeopleManager(context);
                //ClientResult<PrincipalInfo> principal = Utility.ResolvePrincipal(context, web, email, PrincipalType.User, PrincipalSource.All, web.SiteUsers, true);
                //context.ExecuteQuery();

                Microsoft.SharePoint.Client.User newUser = context.Web.EnsureUser(loginName);
                context.Load(newUser);
                context.ExecuteQuery();

                FieldUserValue userValue = new FieldUserValue();
                userValue.LookupId = newUser.Id;

                List members = context.Web.Lists.GetByTitle("Event List");
                Microsoft.SharePoint.Client.ListItem listItem = members.AddItem(new ListItemCreationInformation());
                listItem["EventHost"]           = userValue;
                listItem["EventTitle"]          = eventData.eventTitle;
                listItem["EventId"]             = 1;
                listItem["EventRestaurant"]     = eventData.eventRestaurant;
                listItem["EventMaximumBudget"]  = eventData.eventMaximumBudget;
                listItem["EventTimeToClose"]    = eventData.eventTimeToClose;
                listItem["EventTimeToReminder"] = eventData.eventTimeToReminder;
                listItem["EventParticipants"]   = eventData.eventParticipants;
                listItem["EventCategory"]       = eventData.eventCategory;

                listItem["EventRestaurantId"]  = eventData.eventRestaurantId;
                listItem["EventServiceId"]     = eventData.eventServiceId;
                listItem["EventDeliveryId"]    = eventData.eventDeliveryId;
                listItem["EventCreatedUserId"] = eventData.eventCreatedUserId;
                listItem["EventHostId"]        = eventData.eventHostId;
                listItem.Update();
                context.ExecuteQuery();
            }
        }
Пример #8
0
        /// <summary>
        /// 注册触发器
        /// </summary>
        /// <param name="eventName"></param>
        /// <param name="trigger"></param>
        public void register(string eventName, ITrigger trigger)
        {
            //传入不能为空
            if (string.IsNullOrEmpty(eventName))
            {
                throw new ArgumentException(nameof(eventName) + "不能为空字符串", nameof(eventName));
            }
            if (trigger == null)
            {
                throw new ArgumentNullException(nameof(trigger));
            }

            EventListItem eventItem = _eventList.FirstOrDefault(ei => ei.eventName == eventName);

            if (eventItem == null)
            {
                eventItem = new EventListItem(eventName);
                _eventList.Add(eventItem);
            }

            if (!eventItem.triggerList.Any(ti => ti.trigger == trigger))
            {
                TriggerListItem item = new TriggerListItem(trigger);
                eventItem.triggerList.Add(item);
                logger?.log("Trigger", "注册触发器" + trigger);
                if (doEventNames != null && doEventNames.Contains(eventName))
                {
                    EventListItem insertEventItem = _insertEventList.FirstOrDefault(ei => ei.eventName == eventName);
                    if (insertEventItem == null)
                    {
                        insertEventItem = new EventListItem(eventName);
                        _insertEventList.Add(insertEventItem);
                    }
                    insertEventItem.triggerList.Add(item);
                    logger?.log("Trigger", "注册插入触发器" + trigger);
                }
            }
            else
            {
                throw new RepeatRegistrationException(eventName, trigger);
            }
        }
Пример #9
0
        public CustomerDetails GetCustomerById(int id)
        {
            using (var ctx = new ApplicationDbContext())
            {
                var entity
                    = ctx
                      .Customers
                      .Single(e => e.CustomerId == id && e.OwnerId == _userId);

                var Details = new CustomerDetails
                {
                    CustomerId       = entity.CustomerId,
                    CustomerFName    = entity.CustomerFName,
                    CustomerLName    = entity.CustomerLName,
                    CustomerMInitial = entity.CustomerMInitial,
                    City             = entity.City,
                    Address          = entity.Address,
                    State            = entity.State,
                    CreatedUtc       = entity.CreatedUtc,
                    ModifiedUtc      = entity.ModifiedUtc,


                    Events = new List <EventListItem>()
                };
                foreach (var item in entity.Events)
                {
                    var eventList = new EventListItem()
                    {
                        EventId    = item.EventId,
                        EventTitle = item.EventTitle
                    };
                    Details.Events.Add(eventList);
                }
                return(Details);
            }
        }
Пример #10
0
        public async Task <T> doEvent <T>(T eventArg, Func <T, Task> action) where T : IEventArg
        {
            if (eventArg == null)
            {
                throw new ArgumentNullException(nameof(eventArg));
            }
            EventArgItem eventArgItem = new EventArgItem(eventArg);

            if (currentEvent != null)
            {
                eventArg.parent = currentEvent;
            }
            _eventChainList.Add(eventArgItem);
            _eventRecordList.Add(eventArgItem);
            eventArg.isCanceled = false;
            eventArg.repeatTime = 0;
            eventArg.action     = arg =>
            {
                return(action.Invoke((T)arg));
            };
            //Before
            doEventNames = eventArg.beforeNames;
            if (doEventNames == null)
            {
                doEventNames = new string[] { getNameBefore <T>() }
            }
            ;
            else
            {
                doEventNames = doEventNames.Concat(new string[] { getNameBefore <T>() }).Distinct().ToArray();
            }
            List <ITrigger> triggerList = new List <ITrigger>();

            foreach (string eventName in doEventNames)
            {
                EventListItem eventItem = _eventList.FirstOrDefault(ei => ei.eventName == eventName);
                if (eventItem == null)
                {
                    continue;
                }
                eventItem.triggerList.Sort((a, b) => a.trigger.compare(b.trigger, eventArg));
                triggerList.AddRange(eventItem.triggerList.Select(ti => ti.trigger));
            }
            triggerList.Sort((a, b) => a.compare(b, eventArg));
            while (triggerList.Count > 0)
            {
                ITrigger trigger = triggerList[0];
                triggerList.RemoveAt(0);
                if (eventArg.isCanceled)
                {
                    break;
                }
                if (trigger is ITrigger <T> triggerT)
                {
                    logger?.log("Trigger", "运行触发器" + triggerT);
                    try
                    {
                        await triggerT.invoke(eventArg);
                    }
                    catch (Exception e)
                    {
                        logger?.logError("Trigger", "运行触发器" + triggerT + "引发异常:" + e);
                    }
                }
                else
                {
                    logger?.log("Trigger", "运行触发器" + trigger);
                    try
                    {
                        await trigger.invoke(eventArg);
                    }
                    catch (Exception e)
                    {
                        logger?.logError("Trigger", "运行触发器" + trigger + "引发异常:" + e);
                    }
                }
                if (_insertEventList.Count > 0)
                {
                    foreach (string beforeName in doEventNames)
                    {
                        EventListItem insertEventItem = _insertEventList.FirstOrDefault(ei => ei.eventName == beforeName);
                        if (insertEventItem == null)
                        {
                            continue;
                        }
                        if (insertEventItem.triggerList.Count > 0)
                        {
                            EventListItem eventItem = _eventList.FirstOrDefault(ei => ei.eventName == beforeName);
                            if (eventItem != null)
                            {
                                eventItem.triggerList.Sort((a, b) => a.trigger.compare(b.trigger, eventArg));
                            }
                            triggerList.AddRange(insertEventItem.triggerList.Select(ti => ti.trigger));
                            logger?.log("运行中插入触发器" + string.Join(",", insertEventItem.triggerList.Select(ti => ti.trigger)));
                            triggerList.Sort((a, b) => a.compare(b, eventArg));
                            _insertEventList.Remove(insertEventItem);
                        }
                    }
                    _insertEventList.Clear();
                }
            }
            doEventNames = null;
            //Callback
            try
            {
                onEventBefore?.Invoke(eventArg);
            }
            catch (Exception e)
            {
                logger?.log("Trigger", "执行" + eventArg + "发生前回调引发异常:" + e);
            }
            //Event
            int repeatTime = 0;

            do
            {
                if (eventArg.isCanceled)
                {
                    break;
                }
                if (eventArg.action != null)
                {
                    try
                    {
                        await eventArg.action.Invoke(eventArg);
                    }
                    catch (Exception e)
                    {
                        logger?.log("Error", "执行" + eventArg + "逻辑发生异常:" + e);
                    }
                }
                repeatTime++;
            }while (repeatTime <= eventArg.repeatTime);
            //Callback
            try
            {
                onEventAfter?.Invoke(eventArg);
            }
            catch (Exception e)
            {
                logger?.logError("Trigger", "执行" + eventArg + "发生后回调引发异常:" + e);
            }
            //After
            doEventNames = eventArg.afterNames;
            if (doEventNames == null)
            {
                doEventNames = new string[] { getNameAfter <T>() }
            }
            ;
            else
            {
                doEventNames = doEventNames.Concat(new string[] { getNameAfter <T>() }).Distinct().ToArray();
            }
            triggerList.Clear();
            foreach (string eventName in doEventNames)
            {
                EventListItem eventItem = _eventList.FirstOrDefault(ei => ei.eventName == eventName);
                if (eventItem == null)
                {
                    continue;
                }
                eventItem.triggerList.Sort((a, b) => a.trigger.compare(b.trigger, eventArg));
                triggerList.AddRange(eventItem.triggerList.Select(ti => ti.trigger));
            }
            triggerList.Sort((a, b) => a.compare(b, eventArg));
            while (triggerList.Count > 0)
            {
                ITrigger trigger = triggerList[0];
                triggerList.RemoveAt(0);
                if (eventArg.isCanceled)
                {
                    break;
                }
                if (trigger is ITrigger <T> triggerT)
                {
                    logger?.log("Trigger", "运行触发器" + triggerT);
                    try
                    {
                        await triggerT.invoke(eventArg);
                    }
                    catch (Exception e)
                    {
                        logger?.logError("Trigger", "运行触发器" + triggerT + "引发异常:" + e);
                    }
                }
                else
                {
                    logger?.log("Trigger", "运行触发器" + trigger);
                    try
                    {
                        await trigger.invoke(eventArg);
                    }
                    catch (Exception e)
                    {
                        logger?.logError("Trigger", "运行触发器" + trigger + "引发异常:" + e);
                    }
                }
                if (_insertEventList.Count > 0)
                {
                    foreach (string afterName in doEventNames)
                    {
                        EventListItem insertEventItem = _insertEventList.FirstOrDefault(ei => ei.eventName == afterName);
                        if (insertEventItem == null)
                        {
                            continue;
                        }
                        if (insertEventItem.triggerList.Count > 0)
                        {
                            EventListItem eventItem = _eventList.FirstOrDefault(ei => ei.eventName == afterName);
                            if (eventItem != null)
                            {
                                eventItem.triggerList.Sort((a, b) => a.trigger.compare(b.trigger, eventArg));
                            }
                            logger?.log("Trigger", "插入触发器" + string.Join(",", insertEventItem.triggerList.Select(ti => ti.trigger)));
                            triggerList.AddRange(insertEventItem.triggerList.Select(ti => ti.trigger));
                            triggerList.Sort((a, b) => a.compare(b, eventArg));
                            _insertEventList.Remove(insertEventItem);
                        }
                    }
                    _insertEventList.Clear();
                }
            }
            doEventNames = null;
            _eventChainList.Remove(eventArgItem);
            if (eventArg.isCanceled)
            {
                return(default);
Пример #11
0
        public async Task <T> doEvent <T>(T eventArg) where T : IEventArg
        {
            if (eventArg == null)
            {
                throw new ArgumentNullException(nameof(eventArg));
            }
            //加入事件链
            EventArgItem eventArgItem = new EventArgItem(eventArg);

            if (currentEvent != null)
            {
                eventArg.parent = currentEvent;
            }
            _eventChainList.Add(eventArgItem);
            _eventRecordList.Add(eventArgItem);
            try
            {
                onEventBefore?.Invoke(eventArg);
            }
            catch (Exception e)
            {
                logger?.logError("Trigger", "执行" + eventArg + "发生前回调引发异常:" + e);
            }
            //获取事件名
            doEventNames = eventArg.afterNames;
            if (doEventNames == null)
            {
                doEventNames = new string[] { getName <T>() }
            }
            ;
            else
            {
                doEventNames = doEventNames.Concat(new string[] { getName <T>() }).Distinct().ToArray();
            }
            //对注册事件进行排序
            List <ITrigger> triggerList = new List <ITrigger>();

            foreach (string eventName in doEventNames)
            {
                EventListItem eventItem = _eventList.FirstOrDefault(ei => ei.eventName == eventName);
                if (eventItem == null)
                {
                    continue;
                }
                eventItem.triggerList.Sort((a, b) => a.trigger.compare(b.trigger, eventArg));
                triggerList.AddRange(eventItem.triggerList.Select(ti => ti.trigger));
            }
            triggerList.Sort((a, b) => a.compare(b, eventArg));
            //执行注册事件
            while (triggerList.Count > 0)
            {
                ITrigger trigger = triggerList[0];
                triggerList.RemoveAt(0);
                if (trigger is ITrigger <T> triggerT)
                {
                    logger?.log("Trigger", "运行触发器" + triggerT);
                    try
                    {
                        await triggerT.invoke(eventArg);
                    }
                    catch (Exception e)
                    {
                        logger?.logError("Trigger", "运行触发器" + triggerT + "引发异常:" + e);
                    }
                }
                else
                {
                    logger?.log("Trigger", "运行触发器" + trigger);
                    try
                    {
                        await trigger.invoke(eventArg);
                    }
                    catch (Exception e)
                    {
                        logger?.logError("Trigger", "运行触发器" + trigger + "引发异常:" + e);
                    }
                }
                if (_insertEventList.Count > 0)
                {
                    foreach (string eventName in doEventNames)
                    {
                        EventListItem insertEventItem = _insertEventList.FirstOrDefault(ei => ei.eventName == eventName);
                        if (insertEventItem == null)
                        {
                            continue;
                        }
                        if (insertEventItem.triggerList.Count > 0)
                        {
                            EventListItem eventItem = _eventList.FirstOrDefault(ei => ei.eventName == eventName);
                            if (eventItem != null)
                            {
                                eventItem.triggerList.Sort((a, b) => a.trigger.compare(b.trigger, eventArg));
                            }
                            triggerList.AddRange(insertEventItem.triggerList.Select(ti => ti.trigger));
                            logger?.log("运行中插入触发器" + string.Join(",", insertEventItem.triggerList.Select(ti => ti.trigger)));
                            triggerList.Sort((a, b) => a.compare(b, eventArg));
                            _insertEventList.Remove(insertEventItem);
                        }
                    }
                    _insertEventList.Clear();
                }
            }
            doEventNames = null;
            try
            {
                onEventAfter?.Invoke(eventArg);
            }
            catch (Exception e)
            {
                logger?.logError("Trigger", "执行" + eventArg + "发生后回调引发异常:" + e);
            }
            //移出事件链
            _eventChainList.Remove(eventArgItem);
            return(eventArg);
        }