Пример #1
0
        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();
            }
        }
Пример #2
0
        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();
            }
        }
Пример #3
0
        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.");
                }
            }
        }
Пример #4
0
        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();
            }
        }
Пример #5
0
        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;
        }
Пример #6
0
 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;
     }
 }