예제 #1
0
        protected void LoadMasterStoreDefaults()
        {
            using (var session = MasterStore.OpenSession())
            {
                var leaveType = new LeaveType {Code = "annualleave", Name = "Annual Leave"};
                session.Store(leaveType);
                var sicknessReasons = new List<SicknessReason>
                                          {
                                            new SicknessReason
                                                {
                                                    Children = new List<SicknessReason>
                                                                   {
                                                                       new SicknessReason
                                                                           {
                                                                               Code = "lumbago",
                                                                               Description = "desc",
                                                                               FullName = "fullname",
                                                                               Id=IlluminateDatabase.GenerateId<SicknessReason>()
                                                                           },
                                                                   },
                                                                   Code = "back",
                                                                   Id = IlluminateDatabase.GenerateId<SicknessReason>()
                                                },
                                                new SicknessReason
                                                {
                                                    Children = new List<SicknessReason>
                                                                   {
                                                                       new SicknessReason
                                                                           {
                                                                               Code = "ankle",
                                                                               Description = "desc",
                                                                               FullName = "fullname",
                                                                               Id=IlluminateDatabase.GenerateId<SicknessReason>()
                                                                           },
                                                                   },
                                                                   Code = "joints",
                                                                   Id = IlluminateDatabase.GenerateId<SicknessReason>()
                                                }
                                          };
                var sc = new SicknessClassification
                             {
                                 SicknessReasons = sicknessReasons

                             };
                session.Store(sc);
                session.SaveChanges();
            }
        }
        public override void Import(Stream stream)
        {

            ErrorLines.Clear();

            var reader = new StreamReader(stream);
            string line ;
            //ignore first line(s). 
            for (var i = 0; i < IgnoreLines; i++)
            {
                reader.ReadLine();
            }

            //parse each line
            var re =
                new Regex(
                    @"^(?<personnelnumber>[^\t]+)\t(?<startdate>[^\t]+)\t(?<enddate>[^\t]+)\t(?<leavetype>[^\t]+)\t(?<title>[^\t]*)$");
            //TODO: more sophisticated regex for dates etc. 
            

            while ((line = reader.ReadLine()) != null)
            {
                var match = re.Match(line);
                if (match.Success)
                {
                    using (var Session = Store.OpenSession())
                    {
                        //match relevant bits. 
                        var personnelnumber = match.Groups["personnelnumber"].Captures[0].Value;
                        var user = Session.Query<User>().FirstOrDefault(u => u.PersonnelNumber == personnelnumber);
                        if (user == null)
                        {
                            ErrorLines.Add(line);
                            continue;
                        }


                        var leavetype = match.Groups["leavetype"].Captures[0].Value;
                        var type = Session.Query<LeaveType>().FirstOrDefault(r => r.Code == leavetype);

                        if (type == null)
                        {
                            //get default reason
                            type =
                                Session.Query<LeaveType>().FirstOrDefault(r => r.Code == "DEFAULT");
                            if (type == null)
                            {
                                //!!
                                type = new LeaveType
                                           {
                                               Code = "DEFAULT",
                                               Name = "Default Leave Type"
                                           };
                                Session.Store(type);
                            }
                        }


                        var leave = new Leave
                                        {
                                            Id = IlluminateDatabase.GenerateId<Leave>(),
                                            StartOfProcess = DateTime.Parse(match.Groups["startdate"].Captures[0].Value),
                                            EndOfProcess = DateTime.Parse(match.Groups["enddate"].Captures[0].Value),
                                            ConsolidatedCompletionDate =
                                                DateTime.Parse(match.Groups["enddate"].Captures[0].Value),
                                            Subject = user.ToSimpleUser(),
                                            Title = match.Groups["title"].Captures[0].Value,
                                            Summary = match.Groups["title"].Captures[0].Value,
                                            LeaveType = type
                                        };

                        Session.Store(leave);

                        //should we save if there were errors?
                        Session.SaveChanges();
                    }
                }
                else
                {
                    ErrorLines.Add(line);
                }


                



            }


        }
예제 #3
0
        public OrgCreator(
            int numUsers,
            int numYearsToGoBack,
            int numSicknessesPerUserPerYear,
            int numLeavesPerUserPerYear,
            int numPraisesPerUserPerYear,
            int numConcernsPerUserPerYear,
            int numNotificationsPerUserPerYear
            )
        {
            _numYearsToGoBack = numYearsToGoBack;
            
            _numSicknessesPerUserPerYear = numSicknessesPerUserPerYear;
            _numSicknessesPerUser = _numSicknessesPerUserPerYear * _numYearsToGoBack;
            _numLeavesPerUserPerYear = numLeavesPerUserPerYear;
            _numLeavesPerUser = _numLeavesPerUserPerYear * _numYearsToGoBack;
            _numPraisesPerUserPerYear = numPraisesPerUserPerYear;
            _numConcernsPerUserPerYear = numConcernsPerUserPerYear;
            _numNotificationsPerUserPerYear = numNotificationsPerUserPerYear;
            _numPraisesPerUser = _numPraisesPerUserPerYear * _numYearsToGoBack;
            _numConcernsPerUser = _numConcernsPerUserPerYear * _numYearsToGoBack;
            _numNotificationsPerUser = _numNotificationsPerUserPerYear * _numYearsToGoBack;

            Sicknesses = new List<Sickness>(numUsers * _numSicknessesPerUser);
            Leaves = new List<Leave>(numUsers * _numLeavesPerUser);
            Praises = new List<Praise>(numUsers * _numPraisesPerUser);
            Concerns = new List<Concern>(numUsers * _numConcernsPerUser);
            Notifications = new List<Notification>(numUsers * _numSicknessesPerUser);
            Higs=new List<HIGEntry>(numUsers*365*numYearsToGoBack);

            _rand=new Random();
            var roles = new List<Role>(2) { Role.Administrator, Role.Manager };
            
            var leaveType = new LeaveType {Code = "Leave type code", Id = Guid.NewGuid(), Name = "leave type name"};
            var notificationFrom = new EmailRecipient {Email = "*****@*****.**", Name = "Illuminate"}; 
            
            var factory = AutoPoco.AutoPocoContainer.Configure(x =>
            {

                x.Conventions(c => c.UseDefaultConventions());
                x.Include<User>()
                    .Setup(u => u.EmailAddress).Use<EmailAddressSource>()
                    .Setup(u => u.FirstName).Use
                    <AutoPoco.DataSources.FirstNameSource>()
                    .Setup(u => u.DateOfBirth).Use<DateOfBirthSource>()
                    .Setup(u => u.LastName).Use<LastNameSource>()
                    .Setup(u => u.CanManageOthers).Use<BooleanSource>()
                    .Setup(u => u.CreatedDate).Use<DateTimeSource>(DateTime.Now.AddYears(0 - numYearsToGoBack), DateTime.Now)
                   .Setup(u => u.LastLogin).Use<DateTimeSource>(DateTime.Now.AddYears(0 - numYearsToGoBack), DateTime.Now)
                   .Setup(u => u.NameIdentifier).Use<FirstNameSource>()
                   .Setup(u => u.PersonnelNumber).Use<AutoPoco.DataSources.RandomStringSource>(5, 10)
                   .Setup(u => u.Position).Use<AutoPoco.DataSources.RandomStringSource>(10, 30)
                   .Setup(u => u.Roles).Use<ValueSource<List<Role>>>(roles)
                   .Setup(u => u.Avatar).Use<ValueSource<Avatar>>(Avatar.GetDefaultAvatar())
                    ;
                //x.Include<Sickness>()
                // .Setup(s => s.ConsolidatedCompletionDate).Use<DateTimeSource>(DateTime.Now.AddYears(0 - numYearsToGoBack), DateTime.Now)

                // //.Setup(s => s.ResultId).Use<GuidSource>()
                // //.Setup(s => s.ResultText).Use<RandomStringSource>(20, 100)
                // .Setup(s => s.SicknessReason).Use<ValueSource<SicknessReasonSimple>>(sicknesreason)
                // .Setup(s => s.StartOfProcess).Use<DateTimeSource>(DateTime.Now.AddYears(0 - numYearsToGoBack), DateTime.Now)
                // .Setup(s => s.Summary).Use<RandomStringSource>(50, 200)
                // .Setup(s => s.Title).Use<RandomStringSource>(20, 100)
                //    ;
                x.Include<Praise>()
                 .Setup(p => p.Comment).Use<RandomStringSource>(20, 100)
                 .Setup(p => p.ConsolidatedCompletionDate).Use<DateTimeSource>(DateTime.Now.AddYears(0 - numYearsToGoBack), DateTime.Now)
                 .Setup(p => p.EventDate).Use<DateTimeSource>(DateTime.Now.AddYears(0 - numYearsToGoBack), DateTime.Now)
                 .Setup(p => p.Level).Use<ValueSource<int>>(2)
                    ;
                x.Include<Concern>()
                 .Setup(p => p.Comment).Use<RandomStringSource>(20, 100)
                 .Setup(p => p.ConsolidatedCompletionDate).Use<DateTimeSource>(DateTime.Now.AddYears(0 - numYearsToGoBack), DateTime.Now)
                 .Setup(p => p.EventDate).Use<DateTimeSource>(DateTime.Now.AddYears(0 - numYearsToGoBack), DateTime.Now)
                 .Setup(p => p.Severity).Use<ValueSource<int>>(2)
                    ;
                //x.Include<Leave>()
                // .Setup(l => l.ConsolidatedCompletionDate).Use<DateTimeSource>(DateTime.Now.AddYears(0 - numYearsToGoBack), DateTime.Now)
                // .Setup(l => l.LeaveType).Use<ValueSource<LeaveType>>(leaveType)
                // .Setup(l => l.StartOfProcess).Use<DateTimeSource>(DateTime.Now.AddYears(0 - numYearsToGoBack), DateTime.Now)
                // .Setup(l => l.Title).Use<RandomStringSource>(10, 50)
                // .Setup(l => l.Summary).Use<RandomStringSource>(20, 100)
                //    ;
                x.Include<Notification>()
                    .Setup(n => n.Body).Use<RandomStringSource>(30, 500)
                    .Setup(n => n.From).Use<ValueSource<EmailRecipient>>(notificationFrom)
                    .Setup(n => n.Id).Use<GuidSource>()
                    .Setup(n => n.Read).Use<BooleanSource>()
                    .Setup(n => n.SendDate).Use<DateTimeSource>(DateTime.Now.AddMonths(-6), DateTime.Now.AddMonths(2))
                    .Setup(n => n.Sent).Use<BooleanSource>()
                    .Setup(n => n.Title).Use<RandomStringSource>(30, 100)
                    ;
                x.Include<Task>()
                 .Setup(t => t.IsCanceled).Use<BooleanSource>()
                 .Setup(t => t.IsCompleted).Use<BooleanSource>()
                    ;

            });

            _pocoSession = factory.CreateSession();
            Users = _pocoSession.List<User>(numUsers).Get();

            foreach (var user in Users)
            {
                user.Id = Guid.NewGuid();
            }


        }
예제 #4
0
        private OrgDataGenerator GenerateLookupData()
        {
            _logger.Info(string.Format("Data generator - about to setup lookup data"));
            using (var masterSession = _masterStore.OpenSession())
            {
                var lt = masterSession.Query<LeaveType>().FirstOrDefault();
                if (lt == null)
                {
                    throw new InvalidOperationException(string.Format("No leave types set up in master store with url {0}",_masterStore.Url));
                }
                lt.Id = IlluminateDatabase.GenerateId<LeaveType>();
                var sc = masterSession.Query<SicknessClassification>().FirstOrDefault();
                if (sc == null)
                {
                    throw new InvalidOperationException(string.Format("No sickness classifications set up in master store with url {0}", _masterStore.Url));
                }
                
                using (var orgSession = _orgStore.OpenSession())
                {
                  orgSession.Store(sc);
                  orgSession.Store(lt);
                  
                  _possibleAttributes = Attribute.GetDefaults();

                  foreach (var defaultAttribute in _possibleAttributes)
                  {
                      defaultAttribute.Id = IlluminateDatabase.GenerateId<Attribute>();
                      orgSession.Store(defaultAttribute);
                  }
                  orgSession.SaveChanges();
                }
                
                _leaveType=lt;
                _sicknessClassification = sc;
            }
            _logger.Info(string.Format("Data generator - successfully setup Avatars"));
            return this;

        }