Beispiel #1
0
        private void ShowUserTimeEntry(int Id)
        {
            if (Id > 0)
            {
                listViewTimeEntry.Items.Clear();
                UserRedmine userRedmine = manager.listUserRedmine.Find(x => x.Value.Id == Id);
                if (userRedmine != null)
                {
                    int num = 1;
                    foreach (UserTimeEntry userTimeEntry in userRedmine.listMounthUserTimeEntry)
                    {
                        string[]     line = { num.ToString(),
                                              userTimeEntry.ProjectName,
                                              userTimeEntry.ActivityName,
                                              userTimeEntry.IssueName,
                                              userTimeEntry.DateStart.ToShortDateString(),
                                              userTimeEntry.DateFinish.ToShortDateString(),
                                              userTimeEntry.Hours.ToString(),
                                              userTimeEntry.Comment };
                        ListViewItem lvi = new ListViewItem(line);
                        listViewTimeEntry.Items.Add(lvi);
                        num++;
                    }

                    foreach (ColumnHeader column in listViewTimeEntry.Columns)
                    {
                        column.Width = -2;
                    }
                }
                //RedmineProject redmProject = projects.ListProject.Find(x => x.Value.Id == Id);
                //if (redmProject != null)
                //{
                //    foreach (Issue issue in redmProject.ListIssue)
                //    {
                //        string[] line = { issue.Id.ToString(), issue.Subject };
                //        ListViewItem lvi = new ListViewItem(line);
                //        listViewTimeEntry.Items.Add(lvi);
                //    }
                //}
            }
        }
Beispiel #2
0
        public void GetExcelTimeEntry(UserRedmine userRedmine)
        {
            userRedmine.listExcelUserTimeEntry.Clear();

            int iIndex = 0;

            while (iIndex < userRedmine.listMounthUserTimeEntry.Count)
            {
                UserTimeEntry iUserTimeEntry = userRedmine.listMounthUserTimeEntry[iIndex];
                if (!isExistExcelTimeEntry(iUserTimeEntry, userRedmine.listExcelUserTimeEntry))
                {
                    ExcelUserTimeEntry excelUserTimeEntry = null;
                    FindEqualTimeEntry(iUserTimeEntry, userRedmine.listMounthUserTimeEntry, out excelUserTimeEntry);

                    if (excelUserTimeEntry != null)
                    {
                        userRedmine.listExcelUserTimeEntry.Add(excelUserTimeEntry);
                    }
                }
                iIndex++;
            }
        }
        public int CompareTo(object obj)
        {
            UserRedmine userToCompare = obj as UserRedmine;

            return(this.GroupName.CompareTo(userToCompare.GroupName));
        }
 public UserIssueEntry(Issue issue, Project project, UserRedmine AssignedTo)
 {
     this.issue      = issue;
     this.project    = project;
     this.AssignedTo = AssignedTo;
 }
Beispiel #5
0
        public void MakeSheetWorkingHours(UserRedmine userRedmine, string startPath, out string filePrint, params string[] activityNotWorkingHours)
        {
            int    iCurRow  = 24;
            int    num      = 1;
            string filename = startPath + @"\Pattern.xls";

            filePrint = null;

            if (userRedmine.listMounthUserTimeEntry.Count != 0)
            {
                if (OpenExcel(filename) == -1)
                {
                    return;
                }

                FindExcelSheet(workBook.Sheets, "Лист1");

                if (workSheet != null)
                {
                    foreach (ExcelUserTimeEntry excelUserTimeEntry in userRedmine.listExcelUserTimeEntry)
                    {
                        if (isActivityWork(excelUserTimeEntry.ActivityName, activityNotWorkingHours))
                        {
                            if (num > 1)
                            {
                                iCurRow++;
                                workSheet.Rows[iCurRow].Insert();
                            }

                            //A = column[1] + iCurRow.ToString();
                            workSheet.Cells[iCurRow, 1].Value2 = num;

                            //A = column[2] + iCurRow.ToString();
                            workSheet.Cells[iCurRow, 2].Value2 = (!string.IsNullOrEmpty(excelUserTimeEntry.ActivityName) ?
                                                                  excelUserTimeEntry.ActivityName : string.Empty) +
                                                                 (!string.IsNullOrEmpty(excelUserTimeEntry.IssueName) ?
                                                                  "\\" + excelUserTimeEntry.IssueName : string.Empty);
                            //+
                            //(!string.IsNullOrEmpty(excelUserTimeEntry.Comment) ?
                            // "\\" + excelUserTimeEntry.Comment : string.Empty);

                            workSheet.Cells[iCurRow, 3].Value2 = excelUserTimeEntry.ProjectName;

                            //workSheet.Cells[iCurRow, 8].FormulaLocal = string.Format("=СУММ(A1:A4)");

                            workSheet.Cells[iCurRow, 8].Value2 = excelUserTimeEntry.DateFinish.ToShortDateString();

                            workSheet.Cells[iCurRow, 9].Value2 = excelUserTimeEntry.Hours;

                            workSheet.Cells[iCurRow, 10].Value2 = excelUserTimeEntry.Hours;

                            workSheet.Cells[iCurRow, 11].Value2 = excelUserTimeEntry.DateFinish.ToShortDateString();

                            workSheet.Cells[iCurRow, 13].Value2 = excelUserTimeEntry.DateFinish.ToShortDateString();

                            workSheet.Cells[iCurRow, 14].Value2 = excelUserTimeEntry.HeadName;

                            num++;
                        }
                        //A = column[1] + iCurRow.ToString();
                        //workSheet.Range[A].EntireRow.Insert(XlInsertShiftDirection.xlShiftDown, XlInsertFormatOrigin.xlFormatFromRightOrBelow);
                    }


                    workSheet.Cells[iCurRow + 1, 9].FormulaLocal = string.Format("=СУММ({0}:{1})",
                                                                                 column[9] + iRowData.ToString(), column[9] + iCurRow.ToString());
                    workSheet.Cells[iCurRow + 1, 10].FormulaLocal = string.Format("=СУММ({0}:{1})",
                                                                                  column[10] + iRowData.ToString(), column[10] + iCurRow.ToString());

                    DateTime dateFirstWork = userRedmine.listMounthUserTimeEntry[0].DateFirstWork;

                    workSheet.Cells[18, 1].Value2 = dateFirstWork;
                    workSheet.Cells[18, 7].Value2 = dateFirstWork;
                    workSheet.Cells[6, 4].Value2  = dateFirstWork;

                    workSheet.Cells[8, 1].Value2 = "ФИО  специалиста " + userRedmine.FullName;

                    workSheet.Cells[15, 7].Value2 = string.Format("Задание получил______________________/ {0}/", userRedmine.ShortName);

                    workSheet.Cells[15, 1].Value2 = string.Format("Задание выдал______________________/ {0}/", userRedmine.BossName);

                    string dir = startPath + @"\Трудозатраты";

                    Directory.CreateDirectory(dir);

                    filename = string.Format(dir + @"\" + "{0} трудозатраты за {1}.xls",
                                             userRedmine.ShortName, dateFirstWork.ToString("Y"));
                    workBook.SaveAs(filename);
                    filePrint = filename;
                }
            }

            //applicationExcel.Quit();
            //applicationExcel.ScreenUpdating = true;
            //applicationExcel.Visible = true;
        }
Beispiel #6
0
        public void GetUserFromRedmine(Dictionary <string, string> bossName) //params string[] noNameForReport)
        {
            NameValueCollection parametr;

            countTotalRecord = 0;
            curReadRecord    = 0;

            ClearLists();

            progressBar.InvokeIfNeeded(delegate { progressBar.DisplayStyle = ProgressBarDisplayText.CustomText; });
            progressBar.InvokeIfNeeded(delegate { progressBar.CustomText = "Загрузка записей, подождите пожалуйста."; });
            progressBar.InvokeIfNeeded(delegate { progressBar.Minimum = 0; });


            //SetInitProgBar(progressBar, 0, 5, 1);

            try
            {
                //parametr = new NameValueCollection { { "user_id", "*" } };
                //countTotalRecord += redmineManager.GetObjects<User>(parametr).Count;
                //progressBar.InvokeIfNeeded(delegate { progressBar.PerformStep(); });
                //progressBar.InvokeIfNeeded(delegate { progressBar.CustomText = "Список № " + progressBar.Value + "/5"; });

                //parametr = new NameValueCollection { { "group_id", "*" } };
                //countTotalRecord += redmineManager.GetObjects<Group>(parametr).Count;
                //progressBar.InvokeIfNeeded(delegate { progressBar.PerformStep(); });
                //progressBar.InvokeIfNeeded(delegate { progressBar.CustomText = "Список № " + progressBar.Value + "/5"; });

                //parametr = new NameValueCollection { { "status_id", "*" } };
                //countTotalRecord += redmineManager.GetObjects<Issue>(parametr).Count;
                //progressBar.InvokeIfNeeded(delegate { progressBar.PerformStep(); });
                //progressBar.InvokeIfNeeded(delegate { progressBar.CustomText = "Список № " + progressBar.Value + "/5"; });

                //parametr = new NameValueCollection { { "project_id", "*" } };
                //countTotalRecord += redmineManager.GetObjects<Project>(parametr).Count;
                //progressBar.InvokeIfNeeded(delegate { progressBar.PerformStep(); });
                //progressBar.InvokeIfNeeded(delegate { progressBar.CustomText = "Список № " + progressBar.Value + "/5"; });

                //parametr = new NameValueCollection { { "user_id", "*" } };
                //countTotalRecord += redmineManager.GetObjects<TimeEntry>(parametr).Count;
                //progressBar.InvokeIfNeeded(delegate { progressBar.PerformStep(); });
                //progressBar.InvokeIfNeeded(delegate { progressBar.CustomText = "Список № " + progressBar.Value + "/5"; });

                //progressBar.InvokeIfNeeded(delegate { progressBar.Value = 0; });
                //progressBar.InvokeIfNeeded(delegate { progressBar.Maximum = countTotalRecord; });
                //progressBar.InvokeIfNeeded(delegate { progressBar.Step = 1; });

                parametr = new NameValueCollection {
                    { "user_id", "*" }
                };
                List <User> listUserRedm = redmineManager.GetObjects <User>(parametr);

                countTotalRecord = listUserRedm.Count;
                SetInitProgBar(progressBar, 0, countTotalRecord, 1);
                foreach (var user in listUserRedm)
                {
                    if (user.IsCustomFieldEqual("Учет трудозатратах/месяц"))
                    {
                        listUser.Add(user);
                        //userRedmine.listIssue = this.listIssue;

                        UserRedmine userRedmine = new UserRedmine(this.monthValueHours);
                        userRedmine.bossName    = bossName;
                        userRedmine.Value       = user;
                        userRedmine.listProject = this.listProject;

                        curReadRecord++;
                        progressBar.InvokeIfNeeded(delegate { progressBar.PerformStep(); });
                        progressBar.InvokeIfNeeded(delegate
                        {
                            progressBar.CustomText = "Запись № " + progressBar.Value +
                                                     "/ " + countTotalRecord;
                        });

                        listUserRedmine.Add(userRedmine);

                        Debug.WriteLine(curReadRecord);
                    }


                    //parametr = new NameValueCollection { { "user_id", user.Id.ToString() } };
                    //int count = redmineManager.GetObjects<TimeEntry>(parametr).Count;
                    //if (count > 0)
                    //{
                    //    UserRedmine userRedmine = new UserRedmine();
                    //    userRedmine.Value = user;
                    //    listUserRedmine.Add(userRedmine);
                    //    Console.WriteLine("Name = {0}, Count time entry = {1}", user.LastName, count);
                    //}
                }

                parametr = new NameValueCollection {
                    { "group_id", "*" }
                };
                List <Group> listGroupRedm = redmineManager.GetObjects <Group>(parametr);

                countTotalRecord = listGroupRedm.Count;
                SetInitProgBar(progressBar, 0, countTotalRecord, 1);
                foreach (Group group in listGroupRedm)
                {
                    curReadRecord++;
                    progressBar.InvokeIfNeeded(delegate { progressBar.PerformStep(); });
                    progressBar.InvokeIfNeeded(delegate
                    {
                        progressBar.CustomText = "Запись № " + progressBar.Value +
                                                 "/ " + countTotalRecord;
                    });


                    UserGroup userGroup = new UserGroup(group.Name, group.Id);
                    listUserRedm = redmineManager.GetObjects <User>(new NameValueCollection {
                        { "group_id", group.Id.ToString() }
                    });
                    foreach (User user in listUserRedm)
                    {
                        UserRedmine userRedmine = listUserRedmine.Find(x => x.Value.Id == user.Id);
                        if (userRedmine != null)
                        {
                            userRedmine.listUserGroup.Add(userGroup);
                        }
                    }
                }

                //parametr = new NameValueCollection { { "status_id", "*" } };//{ "status_id", "*" }
                //Issue issueIdRedm = redmineManager.GetObject<Issue>("1435", parametr);

                Issue issue_jornals = redmineManager.GetObject <Issue>("1435", new NameValueCollection {
                    { "include", "journals" }
                });
                if (issue_jornals != null)
                {
                    foreach (var journal in issue_jornals.Journals)
                    {
                        string note = journal.Notes;
                        if (!note.Equals(""))
                        {
                            MonthHours monthHours = new MonthHours(note);
                            listMonthHours.Add(monthHours);
                        }
                    }
                }

                parametr = new NameValueCollection {
                    { "created_on", ">=" + GetFirstDateCurYear() }
                };                                                                                    //{ "status_id", "*" }

                List <Issue> listIssueRedm = redmineManager.GetObjects <Issue>(parametr);

                countTotalRecord = listIssueRedm.Count;
                SetInitProgBar(progressBar, 0, countTotalRecord, 1);
                foreach (Issue issue in listIssueRedm)
                {
                    listIssue.Add(issue);
                    curReadRecord++;
                    progressBar.InvokeIfNeeded(delegate { progressBar.PerformStep(); });
                    progressBar.InvokeIfNeeded(delegate
                    {
                        progressBar.CustomText = "Запись № " + progressBar.Value +
                                                 "/ " + countTotalRecord;
                    });
                    Debug.WriteLine(curReadRecord);
                    Debug.WriteLine(issue.CreatedOn.Value);
                    //if (issue.Id == 1435)
                    //{
                    //    Issue issue_jornals = redmineManager.GetObject<Issue>(issue.Id.ToString(),
                    //                                                          new NameValueCollection { { "include", "journals" } });

                    //    foreach (var journal in issue_jornals.Journals)
                    //    {
                    //        string note = journal.Notes;
                    //        if (!note.Equals(""))
                    //        {
                    //            MonthHours monthHours = new MonthHours(note);
                    //            listMonthHours.Add(monthHours);
                    //        }
                    //    }
                    //}
                }

                parametr = new NameValueCollection {
                    { "project_id", "*" }
                };
                List <Project> listProjectRedm = redmineManager.GetObjects <Project>(parametr);

                countTotalRecord = listProjectRedm.Count;
                SetInitProgBar(progressBar, 0, countTotalRecord, 1);
                foreach (Project project in listProjectRedm)
                {
                    listProject.Add(project);
                    curReadRecord++;
                    progressBar.InvokeIfNeeded(delegate { progressBar.PerformStep(); });
                    progressBar.InvokeIfNeeded(delegate
                    {
                        progressBar.CustomText = "Запись № " + progressBar.Value +
                                                 "/ " + countTotalRecord;
                    });
                }


                parametr = new NameValueCollection {
                    { "spent_on", ">=" + GetFirstDateCurYear() }
                };                                                                                  //{ "user_id", "*" }
                List <TimeEntry> listTimeEntryRedm = redmineManager.GetObjects <TimeEntry>(parametr);

                //List<TimeEntry> listTimeEntryUnique = new List<TimeEntry>();

                TimeEntry timeUniqe;

                for (int i = 0; i < listTimeEntryRedm.Count; i++)
                {
                    TimeEntry timeI = listTimeEntryRedm[i];
                    timeUniqe = timeI;

                    int j = i + 1;
                    while (j < listTimeEntryRedm.Count)
                    {
                        TimeEntry timeJ = listTimeEntryRedm[j];
                        if ((timeI.User.Id == timeJ.User.Id) &
                            (timeI.Project.Id == timeJ.Project.Id) &
                            (timeI.Activity.Id == timeJ.Activity.Id) &
                            (timeI.Id != timeJ.Id) &
                            (timeI.SpentOn.Value.Date.Month == timeJ.SpentOn.Value.Date.Month))
                        {
                            // TODO добавить поиск даты старта и даты финиша суммарной задчи timeI
                            DateTime startDateTimeI  = timeI.GetDateValue("Дата старта", TypeDates.Start);
                            DateTime finishDateTimeI = timeI.GetDateValue("Дата завершения", TypeDates.Finish);

                            DateTime startDateTimeJ  = timeJ.GetDateValue("Дата старта", TypeDates.Start);
                            DateTime finishDateTimeJ = timeJ.GetDateValue("Дата завершения", TypeDates.Finish);

                            if (startDateTimeI.CompareTo(startDateTimeJ) > 0)
                            {
                                timeI.SetDateValue("Дата старта", startDateTimeJ);
                            }

                            if (finishDateTimeI.CompareTo(finishDateTimeJ) < 0)
                            {
                                timeI.SetDateValue("Дата завершения", finishDateTimeJ);
                            }

                            timeI.Hours += timeJ.Hours;
                            listTimeEntryRedm.Remove(timeJ);
                        }
                        else
                        {
                            j++;
                        }
                    }
                }

                countTotalRecord = listTimeEntryRedm.Count;
                SetInitProgBar(progressBar, 0, countTotalRecord, 1);

                var qTimeEntryAll = from time in listTimeEntryRedm
                                    from userRedmine in listUserRedmine
                                    from project in listProject
                                    where time.User.Id == userRedmine.Value.Id
                                    where ((time.Project.Id == project.Id) & project.IsPublic)
                                    select new
                {
                    listIssue   = userRedmine.listIssue,
                    listProject = userRedmine.listProject,
                    userRedmine = userRedmine,
                    listUser    = listUser,
                    Value       = time
                };

                foreach (var time in qTimeEntryAll)
                {
                    UserTimeEntry userTimeEntry = new UserTimeEntry(time.listIssue, time.listProject,
                                                                    time.userRedmine, time.listUser);
                    userTimeEntry.Value = time.Value;
                    time.userRedmine.listUserTimeEntry.Add(userTimeEntry);
                }

                //foreach (var time in listTimeEntryRedm)
                //{
                //    UserRedmine userRedmine = listUserRedmine.Find(x => x.Value.Id == time.User.Id);
                //    Project project = listProject.Find(x => x.Id == time.Project.Id);
                //    curReadRecord++;
                //    progressBar.InvokeIfNeeded(delegate { progressBar.PerformStep(); });
                //    progressBar.InvokeIfNeeded(delegate {progressBar.CustomText = "Запись № " + progressBar.Value +
                //                                        "/ " + countTotalRecord;
                //    });
                //    if (userRedmine != null)
                //    {
                //        if (project != null)
                //        {
                //            if (project.IsPublic)
                //            {
                //                UserTimeEntry userTimeEntry = new UserTimeEntry(userRedmine.listIssue, userRedmine.listProject,
                //                                                                userRedmine, listUser);
                //                userTimeEntry.Value = time;
                //                userRedmine.listUserTimeEntry.Add(userTimeEntry);
                //            }
                //        }
                //    }
                //}
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error - " + ex.Message);
            }

            listUserRedmine.Sort();
        }