public void AddUser() { using (var db = new StationCADDb()) { var usr = new UserProfile(); usr.FirstName = string.Format("FirstName_{0}", DateTime.Now.Ticks); usr.LastName = string.Format("LastName_{0}", DateTime.Now.Ticks); usr.IdentificationNumber = DateTime.Now.Ticks.ToString(); //usr.UserName = string.Format("{0}.{1}", usr.FirstName, usr.LastName); usr.OrganizationAffiliations = new List<OrganizationUserAffiliation>(); usr.OrganizationAffiliations.Add(new OrganizationUserAffiliation { Status = OrganizationUserStatus.Active, Role = OrganizationUserRole.User }); usr.NotificationEmail = "*****@*****.**"; usr.MobileDevices = new List<UserMobileDevice>(); usr.MobileDevices.Add(new UserMobileDevice { Carrier = MobileCarrier.ATT, EnableSMS = true, MobileNumber = "6108833253" }); db.UserProfiles.Add(usr); db.SaveChanges(); Assert.IsTrue(usr.Id > 0); List<UserProfile> users = db.UserProfiles .Include("MobileDevices") .Include("OrganizationAffiliations") .Where(w => w.OrganizationAffiliations.Where(x => x.CurrentOrganization.Id == 1).Count() > 0) .ToList<UserProfile>(); var afterUser = db.UserProfiles .Include("OrganizationAffiliations") .Include("MobileDevices") .Where(x => x.IdentificationNumber == usr.IdentificationNumber) .FirstOrDefault(); db.UserProfiles.Remove(afterUser); db.SaveChanges(); } }
public void CreateIncident() { Incident inc = new Incident(); inc.OrganizationId = 1; inc.CADIdentifier = 1; inc.CallerAddress = "Caller Address 1"; inc.CallerName = "Caller Name 1"; inc.CallerPhone = "Caller Phone 1"; inc.ConsoleID = "Console 1"; inc.DispatchedDateTime = DateTime.Now; inc.IncidentIdentifier = Guid.NewGuid(); inc.Title = "Title"; IncidentAddress add = new IncidentAddress(); add.Number = "1"; add.Street = "street"; add.City = "city"; inc.LocationAddresses = new List<IncidentAddress>(); inc.LocationAddresses.Add(add); IncidentUnit unit = new IncidentUnit(); unit.UnitID = "Unit 1"; unit.EnteredDateTime = DateTime.Now; unit.Disposition = "DP"; inc.Units = new List<IncidentUnit>(); inc.Units.Add(unit); IncidentNote cmt = new IncidentNote(); cmt.Message = "Comment 1"; cmt.EnteredDateTime = DateTime.Now; cmt.Author = "Author"; inc.Notes = new List<IncidentNote>(); inc.Notes.Add(cmt); using (var db = new StationCADDb()) { Incident existing = db.Incidents.Where(x => x.Title == "Title").FirstOrDefault(); if (existing != null) { db.Incidents.Remove(existing); db.SaveChanges(); } db.Incidents.Add(inc); db.SaveChanges(); Incident saved = db.Incidents.Where(x => x.Title == "Title").FirstOrDefault(); Assert.IsNotNull(saved); db.Incidents.Remove(saved); db.SaveChanges(); } }
public void EmailAPINotificationTest() { using (var db = new StationCADDb()) { Incident inc = db.Incidents .Include("Organization") .Include("LocationAddresses") .Include("Notes") .Include("Units") .Where(x => x.LocalIncidentID == "F16001462").FirstOrDefault(); if (inc != null) { UserProfile usr; usr = db.UserProfiles .Include("OrganizationAffiliations") .Include("MobileDevices") .Where(w => w.NotificationEmail == "*****@*****.**") .FirstOrDefault(); if (usr == null) { usr = new UserProfile(); usr.FirstName = string.Format("FirstName_{0}", DateTime.Now.Ticks); usr.LastName = string.Format("LastName_{0}", DateTime.Now.Ticks); usr.IdentificationNumber = DateTime.Now.Ticks.ToString(); //usr.UserName = string.Format("{0}.{1}", usr.FirstName, usr.LastName); usr.OrganizationAffiliations = new List<OrganizationUserAffiliation>(); usr.OrganizationAffiliations.Add(new OrganizationUserAffiliation { Status = OrganizationUserStatus.Active, Role = OrganizationUserRole.User }); usr.NotificationEmail = "*****@*****.**"; usr.MobileDevices = new List<UserMobileDevice>(); usr.MobileDevices.Add(new UserMobileDevice { Carrier = MobileCarrier.ATT, EnableSMS = true, MobileNumber = "6108833253" }); db.UserProfiles.Add(usr); db.SaveChanges(); } EmailNotification email = inc.GetEmailNotification(usr.OrganizationAffiliations.First()); string emailResult = Email.SendEmailMessage(email); SMSEmailNotification sms = inc.GetSMSEmailNotification(usr.OrganizationAffiliations.First()); string smsResult = Email.SendEmailMessage(sms); Console.WriteLine(string.Format("Email: {0}; SMS: {1}", emailResult, smsResult)); db.UserProfiles.Remove(usr); db.SaveChanges(); } else { Console.WriteLine("Couldn't find it."); } } }
public void TestDispatchEventParsing() { string tag = "CC51-FWFC"; using (var db = new StationCADDb()) { string data; using (StreamReader sr = new StreamReader(@"TestData\UnitDispatchReport-F16001716.htm")) { data = sr.ReadToEnd(); } DispatchManager dispMgr = new DispatchManager(); Organization org = db.Organizations.Where(x => x.Tag == tag).FirstOrDefault(); if (org == null) { org = new Organization(); org.Name = "First West Chester Fire Company"; org.Status = OrganizationStatus.Active; org.Type = OrganizationType.Fire; org.Tag = tag; org.ContactEmail = "*****@*****.**"; org.ContactPhone = "610.883.3253"; db.Organizations.Add(org); try { db.SaveChanges(); } catch (Exception ex) { ex.ToString(); } } // Add UserProfile string email = "*****@*****.**"; User user; UserProfile usrp; user = db.Users .Include("Profile") .Include("Profile.OrganizationAffiliations") .Include("Profile.MobileDevices") .Where(w => w.Email == email) .FirstOrDefault(); if (user == null) { user = new User { Id = Guid.NewGuid().ToString(), UserName = email, Email = email }; usrp = new UserProfile(); usrp.FirstName = string.Format("FirstName_{0}", DateTime.Now.Ticks); usrp.LastName = string.Format("LastName_{0}", DateTime.Now.Ticks); usrp.AccountEmail = email; usrp.IdentificationNumber = DateTime.Now.Ticks.ToString(); //usrp.UserName = string.Format("{0}.{1}", usrp.FirstName, usrp.LastName); usrp.OrganizationAffiliations = new List<OrganizationUserAffiliation>(); usrp.OrganizationAffiliations.Add(new OrganizationUserAffiliation { Status = OrganizationUserStatus.Active, Role = OrganizationUserRole.User }); usrp.NotificationEmail = email; usrp.MobileDevices = new List<UserMobileDevice>(); usrp.MobileDevices.Add(new UserMobileDevice { Carrier = MobileCarrier.ATT, EnableSMS = true, MobileNumber = "6108833253" }); user.Profile = usrp; user.Profile.OrganizationAffiliations = new List<OrganizationUserAffiliation>(); OrganizationUserAffiliation uoa = new OrganizationUserAffiliation(); uoa.CurrentOrganization = org; uoa.Role = OrganizationUserRole.User; uoa.Status = OrganizationUserStatus.Active; user.Profile.OrganizationAffiliations.Add(uoa); db.Users.Add(user); } //usr2 = db.UserProfiles // .Include("OrganizationAffiliations")b // .Include("MobileDevices") // .Where(w => w.NotificationEmail == "*****@*****.**") // .FirstOrDefault(); //if (usr2 == null) //{ // usr2 = new UserProfile(); // usr2.FirstName = "Michael"; // usr2.LastName = "Lam"; // usr2.IdentificationNumber = DateTime.Now.Ticks.ToString(); //// usr2.UserName = string.Format("{0}.{1}", usr2.FirstName, usr2.LastName); // usr2.OrganizationAffiliations = new List<UserOrganizationAffiliation>(); // usr2.OrganizationAffiliations.Add(new UserOrganizationAffiliation { Status = OrganizationUserStatus.Active, Role = OrganizationUserRole.User }); // usr2.NotificationEmail = "*****@*****.**"; // usr2.MobileDevices = new List<UserMobileDevice>(); // usr2.MobileDevices.Add(new UserMobileDevice { Carrier = MobileCarrier.ATT, EnableSMS = true, MobileNumber = "6108833253" }); // db.UserProfiles.Add(usr2); //} db.SaveChanges(); dispMgr.ProcessEvent(org, data, DispatchManager.MessageType.Html); //db.UserProfiles.Remove(usrp); //db.SaveChanges(); } }
public static List<OrganizationUserNotification> CreateNotifications(Incident incident) { List<OrganizationUserNotification> results = new List<OrganizationUserNotification>(); ConcurrentBag<OrganizationUserNotification> resultsBag = new ConcurrentBag<OrganizationUserNotification>(); List<OrganizationUserAffiliation> uoas; List<OrganizationUserNotification> notifications; try { using (var db = new StationCADDb()) { uoas = db.OrganizationUserAffiliations .Include("CurrentUserProfile") .Include("CurrentUserProfile.MobileDevices") .Include("CurrentOrganization") .Where(x => x.CurrentOrganization.Id == incident.OrganizationId && x.Status == OrganizationUserStatus.Active).ToList(); if (uoas == null) throw new InvalidProgramException("Unable to find valid UserProfile-Org Affiliations."); ParallelOptions opts = new ParallelOptions(); opts.MaxDegreeOfParallelism = ParallelismFactor; ParallelLoopResult ptlseResult = Parallel.ForEach( uoas, opts, current => { OrganizationUserNotification item = new OrganizationUserNotification(); SMSEmailNotification notification = incident.GetSMSEmailNotification(current); item.NotifcationType = OrganizationUserNotifcationType.TextMessage; item.Notification = notification; item.MessageTitle = notification.MessageSubject; item.MessageBody = notification.MessageBody; item.Affilitation = current; resultsBag.Add(item); }); ParallelLoopResult ptleResult = Parallel.ForEach( uoas, opts, current => { OrganizationUserNotification item = new OrganizationUserNotification(); EmailNotification notification = incident.GetEmailNotification(current); item.NotifcationType = OrganizationUserNotifcationType.Email; item.Notification = notification; item.MessageTitle = notification.MessageSubject; item.MessageBody = notification.MessageBody; item.Affilitation = current; resultsBag.Add(item); }); notifications = resultsBag.ToList<OrganizationUserNotification>(); db.OrganizationUserNotifcations.AddRange(notifications); db.SaveChanges(); } } catch (Exception ex) { string errMsg = string.Format("An error occurred in NotificationManager.CreateNotifications(). Exception: {0}", ex.Message); LogException(errMsg, ex); throw ex; } return notifications; }
public static void NotifyUsers(ref List<OrganizationUserNotification> users) { try { // First group the notifications by notificaion Type List<NotificationGroup> groups = users .GroupBy(g => g.NotifcationType) .Select(x => new NotificationGroup { Type = x.Key, Users = x.ToList<OrganizationUserNotification>() }) .ToList<NotificationGroup>(); // Use TPL to process each type of notification if (groups.Count > 0) { ParallelOptions tplOptions = new ParallelOptions(); tplOptions.MaxDegreeOfParallelism = ParallelismFactor; Parallel.ForEach<NotificationGroup>(groups, x => ProcessNotificationGroup(ref x)); } using (var db = new StationCADDb()) { foreach (OrganizationUserNotification item in users) { db.OrganizationUserNotifcations.Attach(item); } db.SaveChanges(); } } catch (Exception ex) { string errMsg = string.Format("An error occurred in NotificationManager.NotifyUsers(). Exception: {0}", ex.Message); LogException(errMsg, ex); throw ex; } }