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); // } //} } }
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; }
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; }
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(); }