public override int GetHashCode() { unchecked { return(((EventTypeInfo != null ? EventTypeInfo.GetHashCode() : 0) * 397) ^ (ParentType != null ? ParentType.GetHashCode() : 0)); } }
public static EventTypeInfo EventType(IBMWIoTP.ApiClient cli, SchemaInfo sc) { Console.WriteLine("Event Type sample request"); Console.WriteLine("Add Draft EventType"); EventTypeDraft draft = new EventTypeDraft(); draft.name = "Temprature"; draft.description = "eventType for temperature"; draft.schemaId = sc.id; EventTypeInfo info = cli.AddDraftEventType(draft); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(info)); Console.WriteLine("==============================================================================="); Console.WriteLine("Get All Draft EventType"); EventTypeCollection collection = cli.GetAllDraftEventType(); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(collection)); Console.WriteLine("==============================================================================="); Console.WriteLine("Delete Draft"); //creating another one to delete EventTypeInfo del = cli.AddDraftEventType(draft); cli.DeleteDraftEventType(del.id); Console.WriteLine("Get event type draft of id" + info.id); EventTypeInfo reccivedInfo = cli.GetDraftEventType(info.id); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(reccivedInfo)); Console.WriteLine("==============================================================================="); Console.WriteLine("Update draft"); reccivedInfo.description = "updated info"; Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(cli.UpdateDraftEventType(reccivedInfo))); Console.WriteLine("==============================================================================="); Console.WriteLine("Get all active EventType"); EventTypeCollection coll = cli.GetAllActiveEventType(); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(coll)); Console.WriteLine("==============================================================================="); if (coll.results.Count > 0) { Console.WriteLine("Get all active EventType with id"); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(cli.GetActiveEventType(coll.results[0].id))); Console.WriteLine("==============================================================================="); } return(reccivedInfo); }
public static void Main(string[] args) { try{ Console.WriteLine("============================ IBM WatsonIoTP Sample ============================"); Console.WriteLine("==============================================================================="); Console.WriteLine("Check Out Following Samples For Information Management"); Console.WriteLine("1.Basic scenario"); Console.WriteLine("2.All API sample"); Console.WriteLine("3.Any key to exit"); Console.Write("Please enter your choice :"); int val = int.Parse(Console.ReadLine()); Console.WriteLine("==============================================================================="); switch (val) { case 1: Init(); Console.WriteLine("Starting Basic scenario"); sampleSequence(cli); break; case 2: Init(); Console.WriteLine("Starting All API sample"); SchemaInfo sc = Schema(cli); EventTypeInfo info = EventType(cli, sc); var pi = PhysicalInterfaces(cli, info); SchemaDraft sd = new SchemaDraft(); sd.name = "test"; sd.schemaFile = "tempSchemaLi.json"; SchemaInfo si = cli.AddDraftSchema(sd); var li = LogicalInterface(cli, si); DeviceType(cli, li, pi); Devices(cli, li); break; default: break; } Console.Write("Press any key to continue . . . "); Console.ReadKey(); } catch (Exception e) { Console.WriteLine("Err :" + e.Message); } }
public static PhysicalInterfacesInfo PhysicalInterfaces(IBMWIoTP.ApiClient cli, EventTypeInfo evnt) { Console.WriteLine("Physical Interfaces sample request"); Console.WriteLine("Add Draft PhysicalInterfaces"); PhysicalInterfaceDraft draft = new PhysicalInterfaceDraft(); draft.name = "TempPI"; draft.description = "new PhysicalInterfaces for temp"; PhysicalInterfacesInfo newPI = cli.AddDraftPhysicalInterfaces(draft); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(newPI)); Console.WriteLine("==============================================================================="); Console.WriteLine("Get all Draft PhysicalInterfaces"); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(cli.GetAllDraftPhysicalInterfaces())); Console.WriteLine("==============================================================================="); Console.WriteLine("Update Draft PhysicalInterfaces"); newPI.description = "changed to new discription"; Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(cli.UpdateDraftPhysicalInterfaces(newPI))); Console.WriteLine("==============================================================================="); Console.WriteLine("Get Draft PhysicalInterfaces"); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(cli.GetDraftPhysicalInterfaces(newPI.id))); Console.WriteLine("==============================================================================="); Console.WriteLine("Map PhysicalInterfaces EventType"); EventTypeBind bind = new EventTypeBind(); bind.eventTypeId = evnt.id; bind.eventId = "temperature"; Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(cli.MapDraftPhysicalInterfacesEvent(newPI.id, bind))); Console.WriteLine("==============================================================================="); Console.WriteLine("Get all Mapping PhysicalInterfaces EventType"); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(cli.GetAllDraftPhysicalInterfacesMappedEvents(newPI.id))); Console.WriteLine("==============================================================================="); Console.WriteLine("Delete Mapping PhysicalInterfaces EventType"); cli.DeleteDraftPhysicalInterfacesMappedEvents(newPI.id, bind.eventId); Console.WriteLine("==============================================================================="); Console.WriteLine("Get All active PhysicalInterfaces"); PhysicalInterfacesCollection coll = cli.GetAllActivePhysicalInterfaces(); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(coll)); Console.WriteLine("==============================================================================="); if (coll.results.Count > 0) { Console.WriteLine("Get active PhysicalInterfaces"); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(cli.GetActivePhysicalInterfaces(coll.results[0].id))); Console.WriteLine("==============================================================================="); Console.WriteLine("Get active PhysicalInterfaces Events "); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(cli.GetActivePhysicalInterfacesEvents(coll.results[0].id))); Console.WriteLine("==============================================================================="); } return(newPI); }
public static void sampleSequence(IBMWIoTP.ApiClient cli) { SchemaDraft sd = new SchemaDraft(); sd.name = "tempEventSchema"; sd.schemaFile = "tempSchemaPi.json"; Console.WriteLine("Create a draft event schema resource for your event type"); SchemaInfo sc = cli.AddDraftSchema(sd); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(sc)); Console.WriteLine("==============================================================================="); Console.WriteLine("Create a draft event type that references the event schema"); EventTypeDraft draft = new EventTypeDraft(); draft.name = "test"; draft.description = "eventType for temperature"; draft.schemaId = sc.id; EventTypeInfo info = cli.AddDraftEventType(draft); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(info)); Console.WriteLine("==============================================================================="); Console.WriteLine("Create a draft physical interface"); PhysicalInterfaceDraft draftPI = new PhysicalInterfaceDraft(); draftPI.name = "TempPI"; draftPI.description = "new PhysicalInterfaces for temp"; PhysicalInterfacesInfo newPI = cli.AddDraftPhysicalInterfaces(draftPI); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(newPI)); Console.WriteLine("==============================================================================="); Console.WriteLine("Add the event type to the draft physical interface"); EventTypeBind bind = new EventTypeBind(); bind.eventId = deviceEvent; bind.eventTypeId = info.id; EventTypeBind bindResponse = cli.MapDraftPhysicalInterfacesEvent(newPI.id, bind); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(bindResponse)); Console.WriteLine("==============================================================================="); Console.WriteLine("Update the draft device type to connect the draft physical interface"); PhysicalInterfacesInfo updatedPI = cli.AddDraftDeviceTypePI(deviceType, newPI); Console.WriteLine("==============================================================================="); Console.WriteLine("Create a draft logical interface schema resource"); SchemaDraft sdLI = new SchemaDraft(); sdLI.name = "temperatureEventSchema"; sdLI.schemaFile = "tempSchemaLi.json"; SchemaInfo schemaForLI = cli.AddDraftSchema(sdLI); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(schemaForLI)); Console.WriteLine("==============================================================================="); Console.WriteLine("Create a draft logical interface that references a draft logical interface schema"); LogicalInterfaceDraft draftLI = new LogicalInterfaceDraft(); draftLI.name = "environment sensor interface"; draftLI.schemaId = schemaForLI.id; LogicalInterfaceInfo newLI = cli.AddDraftLogicalInterfaces(draftLI); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(newLI)); Console.WriteLine("==============================================================================="); Console.WriteLine("Add the draft logical interface to a device type"); LogicalInterfaceInfo mappedLI = cli.AddDraftDeviceTypeLI(deviceType, newLI); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(mappedLI)); Console.WriteLine("==============================================================================="); Console.WriteLine("Define mappings to map properties in the inbound event to properties in the logical interface"); MappingDraft liMappingDraft = new MappingDraft(); liMappingDraft.notificationStrategy = "on-every-event"; liMappingDraft.propertyMappings = new { test = new { temperature = "$event.temp" } }; liMappingDraft.logicalInterfaceId = mappedLI.id; MappingInfo mappedLiInfo = cli.AddDraftDeviceTypeMapping(deviceType, liMappingDraft); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(mappedLiInfo)); Console.WriteLine("==============================================================================="); Console.WriteLine("Validate and activate the configuration"); OperationInfo activate = new OperationInfo(OperationInfo.Activate); var responce = cli.OperateDraftDeviceType(deviceType, activate); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(responce)); Console.WriteLine("==============================================================================="); Console.WriteLine(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(cli.GetCurrentDeviceState(deviceType, "1qaz2wsx", mappedLI.id))); }
/// <summary> /// //we'll get the email addresses and notify the attendants the attendants /// </summary> public void SendMeetingRequest(RATV3Entities db, Event ev, List <Employee> attendantEmployees, Employee creator, ControllerContext ControllerContext, int update = 0) { try { //getting the reviewed employee Attendant at = ev.Attendants.FirstOrDefault(); Employee reviewed = db.Employees.Where(x => x.EmployeeID == at.EmployeeID).FirstOrDefault(); reviewed.SkillLevelsList = reviewed.SkillLevels.ToList(); //getting message content EventTypeInfo currentEventType = Const.EventTypesinfo.Where(x => x.EventType == ev.EventType).FirstOrDefault(); string embededHtml = "<html><head></head><body>" + "<p>Test</p>" + "<br/><br/>" + "<p>Test Embeded</p>" + "<br/>" + "<p>Test Ending</p>" + "<br/></body></html>"; if (currentEventType != null && currentEventType.EventType == "Performance Review") { string generatednotificationHTML = ViewRenderer.RenderView("~/Views/Notifications/PerformanceReview.cshtml", reviewed, ControllerContext); if (!String.IsNullOrEmpty(generatednotificationHTML)) { embededHtml = generatednotificationHTML; } } //preping the email message MailMessage email = new MailMessage(); email.From = new MailAddress(creator.Email, creator.FirstName + ' ' + creator.LastName); //adding recipients foreach (Employee attendant in attendantEmployees) { email.To.Add(new MailAddress(attendant.Email, attendant.FirstName + ' ' + attendant.LastName)); } email.IsBodyHtml = true; email.Subject = ev.EventType; //preparing email content //"text/html" - this view will have all the content System.Net.Mime.ContentType htmlMimeContent = new System.Net.Mime.ContentType("text/html"); AlternateView htmlView = AlternateView.CreateAlternateViewFromString(embededHtml, htmlMimeContent); htmlView.ContentType.CharSet = Encoding.UTF8.WebName; if (ev.EventType == "Performance Review" && ev.Attendants != null && ev.Attendants.Count > 0 && reviewed != null) { //we'll attach the pdf to the email Stream pdfDocument = GenerateUserCV(reviewed, ControllerContext); if (pdfDocument != null) { LinkedResource resource = new LinkedResource(pdfDocument); resource.ContentType.Name = reviewed.FirstName + " " + reviewed.LastName + " " + "Report.pdf"; htmlView.LinkedResources.Add(resource); } } else if (ev.EventType == "Department Monthly Meeting" && reviewed.DepartmentID.HasValue) { //we'll attach the excel report to the email byte[] array = ExcelReportGenerator.GenerateExcelReportForDepartment(reviewed.DepartmentID.Value, ev.StartTime.Month, ev.StartTime.Year, db); Stream excelDocument = new MemoryStream(array); if (excelDocument != null) { LinkedResource resource = new LinkedResource(excelDocument); resource.ContentType.Name = "Department Report.xlsx"; htmlView.LinkedResources.Add(resource); } } //preparing calendar meeting view DateTime endTime; if (ev.EndTime.HasValue) { endTime = ev.EndTime.Value; } else { endTime = ev.StartTime; } //this is the guid of the meeting request Guid requestGUID; if (ev.IcsGuid.HasValue) { requestGUID = ev.IcsGuid.Value; } else { requestGUID = Guid.NewGuid(); } AlternateView avCal = CreateICSView(email, ev.StartTime, endTime, ev, requestGUID, update); //email.Headers.Add("Content-class", "urn:content-classes:calendarmessage"); email.AlternateViews.Add(htmlView); email.AlternateViews.Add(avCal); //finally we send the mail client.Send(email); if (!ev.IcsGuid.HasValue) { ev.IcsGuid = requestGUID; db.Entry(ev).State = EntityState.Modified; } if (update > 0) { //we want to be able to store the update number too //ev.UpdateNo = update; db.Entry(ev).State = EntityState.Modified; } db.SaveChanges(); } catch (Exception ex) { //handle Exception } }
public static Dictionary <string, List <LessonInfo> > ParseCistXlsLessonInfo(string cistXlsTimetableData, params Group[] searchGroups) { var groupsLessons = new Dictionary <string, List <LessonInfo> >(); if (searchGroups == null || searchGroups.Length == 0) { return(groupsLessons); } try { // Setting default values foreach (string searchGroup in searchGroups.Select(sg => sg.Name)) { if (string.IsNullOrEmpty(searchGroup)) { throw new ArgumentNullException("Group name must be specified"); } groupsLessons.Add(searchGroup, new List <LessonInfo>()); } cistXlsTimetableData = cistXlsTimetableData.Substring(cistXlsTimetableData.IndexOf("\n\n")); List <string> timetableInfoRaw = cistXlsTimetableData .Split(new string[] { @"ss:Type=""String"">" }, StringSplitOptions.RemoveEmptyEntries) .Skip(1) .ToList(); for (int i = 0; i < timetableInfoRaw.Count; i += 2) { List <string> infoRaw = timetableInfoRaw[i + 1] .Remove(timetableInfoRaw[i + 1].IndexOf("</Data>")) .Split(new string[] { ": ", "\n" }, StringSplitOptions.RemoveEmptyEntries) .ToList(); string lessonShortName = timetableInfoRaw[i].Remove(timetableInfoRaw[i].IndexOf("</Data>")); string lessonLongName = infoRaw[0].Trim(); foreach (string groupName in groupsLessons.Keys) { groupsLessons[groupName].Add(new LessonInfo { ShortName = lessonShortName, LongName = lessonLongName }); } foreach (string eventTypeInfoRaw in infoRaw.Skip(1)) { List <string> eventTypeInfo = eventTypeInfoRaw.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList(); if (eventTypeInfo.Count <= 4) { // Event type doesn`t have teacher continue; } // Checking for groups with spaces while (!eventTypeInfo[3].EndsWith(",") && eventTypeInfo.Count > 3) { eventTypeInfo[3] += $" {eventTypeInfo[4]}"; eventTypeInfo.RemoveAt(4); } foreach (string groupName in groupsLessons.Keys) { if (!IsGroupsListFromXlsContains(eventTypeInfo[3], groupName)) { // Teachers for different groups continue; } LessonInfo lessonInfo = groupsLessons[groupName].First(li => li.ShortName == lessonShortName); string type = eventTypeInfo[0]; string teacher = $"{eventTypeInfo[4]} {eventTypeInfo[5]}{eventTypeInfo[6]}".TrimEnd(','); EventTypeInfo eventType = lessonInfo.EventTypesInfo.FirstOrDefault(et => et.Name == type); if (eventType == null) { eventType = new EventTypeInfo { Name = type }; lessonInfo.EventTypesInfo.Add(eventType); } if (!eventType.Teachers.Contains(teacher)) { eventType.Teachers.Add(teacher); } } } } } catch (Exception ex) { //Device.BeginInvokeOnMainThread(() => //{ // MessagingCenter.Send(Application.Current, MessageTypes.ExceptionOccurred, ex); //}); groupsLessons = null; } return(groupsLessons); }