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)); }
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()); }
public ApiResponse AddEventListItem(string Id, [FromBody] EventListItem item) { try { _spListService.AddEventListItem(Id, item); return(ApiUtil.CreateSuccessfulResult()); } catch (Exception e) { return(ApiUtil.CreateFailResult(e.ToString())); } }
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); }
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()); }
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); } }
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(); } }
/// <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); } }
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); } }
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);
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); }