コード例 #1
0
ファイル: TaskRepository.cs プロジェクト: StefanAniff/hb.trex
        /// <summary>
        /// Checks if the task exists by the given guid
        /// </summary>
        public bool ExistsByGuid(Guid guid)
        {
            var session = OpenSession ?? ActiveSessionManager.GetActiveSession();
            var task    = session.QueryOver <Task>().Where(x => x.Guid == guid).SingleOrDefault();

            return(task != null);
        }
コード例 #2
0
        public TimeEntry GetByGuid(Guid id)
        {
            var session   = OpenSession ?? ActiveSessionManager.GetActiveSession();
            var timeEntry = session.QueryOver <TimeEntry>().Where(te => te.Guid == id);

            return(timeEntry.SingleOrDefault());
        }
コード例 #3
0
ファイル: TaskRepository.cs プロジェクト: StefanAniff/hb.trex
        public List <Task> GetByChangeDate(DateTime?startDate)
        {
            var     session = OpenSession ?? ActiveSessionManager.GetActiveSession();
            Project project = null;
            Task    task    = null;
            Company company = null;
            User    pUser   = null;

            var queryOver = session.QueryOver(() => task)
                            .Left.JoinAlias(() => task.CreatedBy, () => pUser)
                            .Left.JoinAlias(() => task.Project, () => project)
                            .Left.JoinAlias(() => project.Company, () => company);

            queryOver = queryOver.Where(x => !x.Inactive &&
                                        !project.Inactive &&
                                        !company.Inactive);

            if (startDate.HasValue)
            {
                queryOver = queryOver
                            .And(task1 => task1.CreateDate >= startDate ||
                                 (task1.ChangeDate != null &&
                                  task1.ChangeDate >= startDate));
            }


            return(queryOver.List <Task>().ToList());
        }
コード例 #4
0
        public bool Exists(Guid id)
        {
            var session   = OpenSession ?? ActiveSessionManager.GetActiveSession();
            var timeEntry = session.QueryOver <TimeEntry>().Where(te => te.Guid == id).List();

            return(timeEntry.Any());
        }
コード例 #5
0
ファイル: Global.asax.cs プロジェクト: echan-sage/Sage300-SDK
        /// <summary>
        /// MVC appliction start event
        /// </summary>
        protected void Application_Start()
        {
            // Register areas and routes
            AreaRegistration.RegisterAllAreas();

            UMClientConfig.Register();
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            WebApiConfig.Register(GlobalConfiguration.Configuration);

            // Register global filters
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

            // Register scripts and css bundles
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            // Register unity configuration
            BootstrapConfig.Register();

            //Register providers
            ProvidersConfig.Register();

            // Register custom flag enum model binder
            ModelBinders.Binders.DefaultBinder = new CustomModelBinder();

            AsyncManagerConfig.Register();

            ActiveSessionManager.StartTimer(spanTicks: TimeSpan.FromHours(6).Ticks); // token expire time is 6 hours
        }
コード例 #6
0
        /// <summary>
        /// Event triggered when Session expires/ends
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        private void Session_End(object sender, EventArgs e)
        {
            //This will never be called if sessions are stored in azure cache

            CommonService.DestroyPool(Session.SessionID);

            ActiveSessionManager.RemoveSession(Session.SessionID);
        }
コード例 #7
0
        /// <summary>
        /// Gets a list of customers, Changed after the given date
        /// </summary>
        /// <param name="startDate">The start date.</param>
        /// <returns></returns>
        public IEnumerable <Company> GetByChangeDate(DateTime startDate)
        {
            var session      = OpenSession ?? ActiveSessionManager.GetActiveSession();
            var customerList = session.QueryOver <Company>()
                               .Where(customers => (customers.CreateDate >= startDate ||
                                                    (customers.ChangeDate != null &&
                                                     customers.ChangeDate >= startDate)) &&
                                      customers.Inactive == false);

            return(customerList.List());
        }
コード例 #8
0
ファイル: TaskRepository.cs プロジェクト: StefanAniff/hb.trex
        /// <summary>
        /// Gets the task by GUID.
        /// </summary>
        public Task GetByGuid(Guid guid)
        {
            var session    = OpenSession ?? ActiveSessionManager.GetActiveSession();
            var task       = session.QueryOver <Task>().Where(tasks => tasks.Guid == guid);
            var returnTask = task.SingleOrDefault();

            if (returnTask == null)
            {
                throw new NotFoundByIDException("Task not found by Guid: " + guid.ToString());
            }
            return(returnTask);
        }
コード例 #9
0
ファイル: UserRepository.cs プロジェクト: StefanAniff/hb.trex
        /// <summary>
        /// Gets the user by id
        /// </summary>
        /// <param name="userID">The user ID.</param>
        /// <returns></returns>
        public User GetByUserID(int userID)
        {
            ISession session = OpenSession ?? ActiveSessionManager.GetActiveSession();
            User     user    = session.Get <User>(userID);

            if (user == null)
            {
                throw new UserNotFoundException("The user was not found in the User table");
            }

            return(user);
        }
コード例 #10
0
ファイル: UserRepository.cs プロジェクト: StefanAniff/hb.trex
        /// <summary>
        /// Gets the user by the specified username
        /// </summary>
        /// <param name="userName">Name of the user.</param>
        /// <returns>The found user</returns>
        /// <exception cref="UserNotFoundException"></exception>
        public User GetByUserName(string userName)
        {
            ISession session = OpenSession ?? ActiveSessionManager.GetActiveSession();
            var      user    = session.QueryOver <User>().Where(users => users.UserName == userName).List();

            if (!user.Any())
            {
                throw new UserNotFoundException("The user " + userName + " was not found in the User table");
            }


            return(user.Single());
        }
コード例 #11
0
        /// <summary>
        /// Gets the current DB version.
        /// </summary>
        /// <returns></returns>
        public DBVersion GetCurrentVersion()
        {
            var session = OpenSession ?? ActiveSessionManager.GetActiveSession();
            var version = session.QueryOver <DBVersion>().Select(versions => versions)
                          .OrderBy(sort => sort.CreateDate).Asc.List();

            if (!version.Any())
            {
                throw new VersionException("No version entries found in database. Database must have a valid version");
            }

            return(version.Last <DBVersion>());
        }
コード例 #12
0
        public IEnumerable <TimeEntry> GetTimeEntriesByPeriodAndUser(int userId, DateTime startDate, DateTime endDate)
        {
            var session = OpenSession ?? ActiveSessionManager.GetActiveSession();

            //include the whole enddate
            var realEnddate = endDate.Date.AddDays(1);
            var timeEntries = session.QueryOver <TimeEntry>()
                              .Where(te => te.StartTime >= startDate.Date &&
                                     te.StartTime < realEnddate &&
                                     te.User.UserID == userId);

            return(timeEntries.List());
        }
コード例 #13
0
        public double GetBillableHours(DateTime startDate, DateTime endDate, int userId)
        {
            var session = OpenSession ?? ActiveSessionManager.GetActiveSession();

            Task tTask = null;
            var  hours = session.QueryOver <TimeEntry>()
                         .Left.JoinAlias(t => t.Task, () => tTask)
                         .Where(te => te.StartTime >= startDate &&
                                te.StartTime < endDate.Date.AddDays(1) &&
                                te.User.UserID == userId && te.Billable &&
                                tTask.TimeRegistrationTypeId != (int)TimeRegistrationTypeEnum.Projection)
                         .Select(Projections.Sum <TimeEntry>(x => x.BillableTime))
                         .SingleOrDefault <double>();

            return(hours);
        }
コード例 #14
0
ファイル: TaskRepository.cs プロジェクト: StefanAniff/hb.trex
        public List <Task> GetByIds(List <int> taskIds)
        {
            var     session = OpenSession ?? ActiveSessionManager.GetActiveSession();
            Project project = null;
            Task    task    = null;
            Company company = null;
            User    pUser   = null;

            var queryOver = session.QueryOver(() => task)
                            .Left.JoinAlias(() => task.CreatedBy, () => pUser)
                            .Left.JoinAlias(() => task.Project, () => project)
                            .Left.JoinAlias(() => project.Company, () => company);

            queryOver = queryOver.WhereRestrictionOn(x => x.TaskID).IsIn(taskIds);

            return(queryOver.List <Task>().ToList());
        }
コード例 #15
0
        /// <summary>
        /// Gets projects changed after a given date
        /// </summary>
        public IEnumerable <Project> GetByChangeDate(DateTime startDate)
        {
            var session = OpenSession ?? ActiveSessionManager.GetActiveSession();

            User    pUser   = null;
            Company company = null;
            var     query   = session.QueryOver <Project>()
                              .Left.JoinAlias(p => p.CreatedBy, () => pUser)
                              .Left.JoinAlias(p => p.Company, () => company)
                              .Where(proj => proj.CreateDate >= startDate ||
                                     (proj.ChangeDate != null &&
                                      proj.ChangeDate >= startDate));
            var project = query.And(p => !p.Inactive &&
                                    !company.Inactive);

            return(project.List());
        }
コード例 #16
0
        public Client FindClientByCustomerId(string customerId)
        {
            var session = OpenSession ?? ActiveSessionManager.GetActiveSession();

            if (!session.Connection.ConnectionString.Contains("base"))
            {
                int i = 0;
            }
            var client = session.QueryOver <Client>()
                         .Where(clients => clients.CustomerId == customerId).List();

            if (!client.Any())
            {
                throw new ClientNotFoundException(string.Format("Customer '{0}' not found", customerId));
            }

            return(client.Single());
        }
コード例 #17
0
        /// <summary>
        /// Returns all timeentries for a given period, disregarding if relating items are inactive
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <returns></returns>
        public IEnumerable <TimeEntry> GetAllTimeEntriesByPeriod(DateTime startDate, DateTime endDate)
        {
            var session = OpenSession ?? ActiveSessionManager.GetActiveSession();

            Task    pTask    = null;
            Project pProject = null;
            Company pCompany = null;
            User    pUser    = null;

            var timeEntries = session.QueryOver <TimeEntry>()
                              .Left.JoinAlias(t => t.Task, () => pTask)
                              .Left.JoinAlias(t => pTask.Project, () => pProject)
                              .Left.JoinAlias(t => pProject.Company, () => pCompany)
                              .Left.JoinAlias(t => t.User, () => pUser)
                              .Where(te => te.StartTime >= startDate.Date &&
                                     te.StartTime <= endDate);

            return(timeEntries.List());
        }
コード例 #18
0
        public double GetEarningsByUser(DateTime startDate, DateTime endDate, int userId)
        {
            var session = OpenSession ?? ActiveSessionManager.GetActiveSession();

            //User pUser = null;
            var billableTimeSum = session.QueryOver <TimeEntry>()
                                  .Where(te => te.StartTime >= startDate &&
                                         te.StartTime < endDate.Date.AddDays(1) &&
                                         te.User.UserID == userId && te.Billable)
                                  .Select(Projections.Sum <TimeEntry>(x => x.BillableTime))
                                  .SingleOrDefault <double>();

            var priceSum = session.QueryOver <TimeEntry>()
                           .Where(te => te.StartTime >= startDate &&
                                  te.StartTime < endDate.Date.AddDays(1) &&
                                  te.User.UserID == userId && te.Billable)
                           .Select(Projections.Sum <TimeEntry>(x => x.Price))
                           .SingleOrDefault <double>();

            return(billableTimeSum * priceSum);
        }
コード例 #19
0
        public IEnumerable <TimeEntry> GetInactiveTimeEntriesByPeriodAndUser(int userId, DateTime startDate, DateTime endDate)
        {
            var session = OpenSession ?? ActiveSessionManager.GetActiveSession();

            Task    pTask    = null;
            Project pProject = null;
            Company pCompany = null;

            //include the whole enddate
            var realEnddate         = endDate.Date.AddDays(1);
            var inactiveTimeEntries = session.QueryOver <TimeEntry>()
                                      .Left.JoinAlias(t => t.Task, () => pTask)
                                      .Left.JoinAlias(t => pTask.Project, () => pProject)
                                      .Left.JoinAlias(t => pProject.Company, () => pCompany)
                                      .Where(te => te.StartTime >= startDate.Date && te.StartTime < realEnddate &&
                                             te.User.UserID == userId &&
                                             (pTask.Inactive ||
                                              pProject.Inactive ||
                                              pCompany.Inactive));

            return(inactiveTimeEntries.List());
        }
コード例 #20
0
ファイル: Global.asax.cs プロジェクト: echan-sage/Sage300-SDK
 /// <summary>
 /// MVC application end event
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 protected void Application_End(object sender, EventArgs e)
 {
     CommonService.ClearSessionLogs();
     ActiveSessionManager.StopTimer();
 }