示例#1
0
        private void Login(PasswordBox passwordObj)
        {
            LoginDetail loginData = loginDataService.GetDefaultLoginCredentials();

            if (loginData.UserName.Equals(UserName) && loginData.UserPassword.Equals(passwordObj.Password))
            {
                TaskOverview overView = new TaskOverview();
                ApplicationHelper.NavigationService.Navigate(new Uri("View/TaskOverview.xaml", UriKind.RelativeOrAbsolute));
            }
            else
            {
                LoginError = "Entered credentials are invalid.";
            }
        }
        public TaskOverview GetOverview(int taskId)
        {
            if (!db.ProjectTasks.Any(k => k.ID == taskId))
            {
                throw new ClientException("Team dont exist");
            }

            //// supervising teams

            //List<TeamKeyValue> teams = db.TeamsProjects
            //    .Where(k => k.ProjectId == taskId)
            //    .Select(k => new TeamKeyValue(k.Team.ID, k.Team.Name))
            //    .ToList();

            //List<int> teamsId = teams.Select(k => k.Id).ToList();

            var q_tsActivities = db.TimeSheetActivities
                                 .Where(k => !k.DeletedAt.HasValue &&
                                        k.TimeSheetTask.ProjectTask.ID == taskId);

            TaskOverview overview = new TaskOverview();

            //IQueryable<DataSets.ProjectTask> q_tasks = db.ProjectTasks
            //    .Where(t => t.ProjectId == taskId);

            // timesheet activities
            //overview.Members.Count > 0

            //if (true)
            //{
            //List<string> membersIds = overview.Members.Select(k => k.Id).ToList();

            // ActivitiesFrequency
            overview.ActivitiesFrequency = q_tsActivities
                                           .OrderByDescending(k => k.FromDate)
                                           .GroupBy(k => k.FromDate.Date)
                                           .Take(30)
                                           .AsEnumerable()
                                           .Select((key) => new KeyValuePair <DateTime, int>(key.Key, key.Count()))
                                           .ToList();

            // ActivitiesMinuts
            overview.ActivitiesMinutes = q_tsActivities
                                         .Where(k => k.ToDate.HasValue)
                                         .OrderByDescending(k => k.FromDate)
                                         .GroupBy(k => k.FromDate.Date)
                                         .Take(30)
                                         .AsEnumerable()
                                         .Select((key) => new KeyValuePair <DateTime, int>(key.Key, (int)Math.Floor(key.Sum(a => (a.ToDate.Value - a.FromDate).TotalMinutes))))
                                         .ToList();

            // UserActivitiesFrequency
            overview.UserActivitiesFrequency = q_tsActivities
                                               .Select(k => new { k.FromDate, k.TimeSheetTask.TimeSheet.UserId, Name = k.TimeSheetTask.TimeSheet.User.FirstName + " " + k.TimeSheetTask.TimeSheet.User.LastName })
                                               .OrderByDescending(k => k.FromDate)
                                               .GroupBy(k => k.UserId)
                                               .AsEnumerable()
                                               .Select((key) => new KeyValuePair <UserKeyValue, int>(new UserKeyValue(key.Key, key.First().Name), key.Count()))
                                               .ToList();

            // UserActivitiesMinuts
            overview.UserActivitiesMinutes = q_tsActivities
                                             //.Where(k => k.ToDate.HasValue)
                                             .Select(k => new { k.FromDate, k.ToDate, k.TimeSheetTask.TimeSheet.UserId, Name = k.TimeSheetTask.TimeSheet.User.FirstName + " " + k.TimeSheetTask.TimeSheet.User.LastName })
                                             .OrderByDescending(k => k.FromDate)
                                             .GroupBy(k => k.UserId)
                                             .AsEnumerable()
                                             .Select((key) => new KeyValuePair <UserKeyValue, int>(new UserKeyValue(key.Key, key.First().Name), (int)Math.Floor(key.Sum(a => ((a.ToDate ?? DateTime.Now) - a.FromDate).TotalMinutes))))
                                             .ToList();

            //ActiveActivities
            overview.ActiveActivities = q_tsActivities
                                        .OrderByDescending(k => k.FromDate)
                                        .Where(k => !k.ToDate.HasValue)
                                        .Select(k => new TimeSheetActivity()
            {
                ID       = k.ID,
                FromDate = k.FromDate,
                User     = new User()
                {
                    Id        = k.TimeSheetTask.TimeSheet.User.Id,
                    FirstName = k.TimeSheetTask.TimeSheet.User.FirstName,
                    LastName  = k.TimeSheetTask.TimeSheet.User.LastName,
                },
                ProjectTask = new ProjectTask()
                {
                    ID    = k.TimeSheetTask.ProjectTask.ID,
                    Title = k.TimeSheetTask.ProjectTask.Title,
                }
            })
                                        .ToList();

            //// add the users that are not in workloads that have no timesheets
            //var memebresWithNoTimeSheets = overview.Members.Where(k => !overview.Workload.Any(w => w.Key.Id == k.Id)).ToList();

            //if (memebresWithNoTimeSheets.Count > 0)
            //{
            //    overview.Workload.AddRange(memebresWithNoTimeSheets.Select(k =>
            //    new KeyValuePair<Models.Users.UserKeyValue, TasksWorkload>(k, new TasksWorkload() { })));
            //}
            //}

            return(overview);
        }