Esempio n. 1
0
        private void RecalculateSelectedDay()
        {
            frmRecalculateHours oRec = new frmRecalculateHours
            {
                Location = Cursor.Position
            };

            oRec.openType = frmRecalculateHours.OpenType.Hours;
            if (oRec.ShowDialog() == DialogResult.OK)
            {
                ListViewGroup       oLvg      = oSelectedHour.Group;
                WorkItemsDay        oDay      = new WorkItemsDay(((WorkItemsDay)oLvg.Tag).Date);
                List <ListViewItem> lstRemove = new List <ListViewItem>();
                foreach (ListViewItem oItem in oLvg.Items)
                {
                    oDay.WorkItems.Add((WorkItemHours)oItem.Tag);
                    lstRemove.Add(oItem);
                }
                lstRemove.ForEach(x => lvwHistory.Items.Remove(x));
                oDay.CalculateHaxComHours(oRec.dHours);
                foreach (WorkItemHours oHours in oDay.WorkItems)
                {
                    lvwHistory.Items.Add(WorkItemHoursToLVWItem(oLvg, oHours));
                }
            }
        }
Esempio n. 2
0
        public static List <WorkItemsDay> GroupItemsPerDay(List <WorkItemRegister> itemList)
        {
            DateTime            dateFrom    = itemList.Select(x => x.DateFrom).Min();
            DateTime            dateThru    = itemList.Select(x => x.DateFrom).Max();
            List <WorkItemsDay> groupedList = new List <WorkItemsDay>();
            WorkItemsDay        oRow;
            WorkItemHours       oTemp;

            for (var day = dateFrom.Date; day.Date <= dateThru.Date; day = day.AddDays(1))
            {
                oRow = new WorkItemsDay(day);
                foreach (WorkItemRegister wi in itemList.Where(x => x.DateFrom.Date == day.Date))
                {
                    oTemp = oRow.WorkItems.Where(x => x.ID == wi.ID).FirstOrDefault();
                    if (oTemp == null)
                    {
                        oTemp = new WorkItemHours(wi);
                        oRow.WorkItems.Add(oTemp);
                    }
                    else
                    {
                        oTemp.Hours = oTemp.Hours.Add(wi.timeSpan);
                    }
                }
                groupedList.Add(oRow);
            }
            return(groupedList);
        }
Esempio n. 3
0
        private void LoadNewItems()
        {
            List <WorkItemsDay> oItems = new List <WorkItemsDay>();
            WorkItemsDay        oTemp;

            foreach (DataSource oDataSource in oDataSources)
            {
                switch (oDataSource.Type)
                {
                case Datasourcetype.Outlook:
                    Outlook oDS       = new Outlook();
                    var     oMeetings = oDS.GetAllCalendarItems(dtpFrom.Value, new DateTimeOffset[] { });
                    foreach (DateTime oDate in oMeetings.Select(x => x.Date.Date).Distinct())
                    {
                        oTemp = oItems.FirstOrDefault(x => x.Date == oDate);
                        if (oTemp == null)
                        {
                            oTemp = new WorkItemsDay(oDate);
                            oItems.Add(oTemp);
                        }
                        oTemp.WorkItems.AddRange(
                            oMeetings.Where(x => x.Date.Date == oDate)
                            .Select(x => new WorkItemHours()
                        {
                            FixedHours     = true,
                            Hours          = TimeSpan.FromHours((double)x.DurationInHours),
                            HaxComHours    = x.DurationInHours,
                            Title          = x.Name,
                            ID             = "meeting",
                            TfsId          = 0,
                            FromDatasource = oDataSource,
                            ProjectId      = 0,
                            ClientId       = 166,
                            SubClientId    = 5,
                            Function       = 41,               // meeting
                            BillingType    = BillingType.Capitalized,
                            Description    = x.Name,
                        }));
                    }
                    break;

                case Datasourcetype.TFS:
                    var oTFSItems = WorkItemMapper.GetHistoricalWorkitemsByUser(oDataSource.ServerUrl, oDataSource.ProjectName, oDataSource.User, dtpFrom.Value, oDataSource);
                    foreach (DateTime oDate in oTFSItems.Select(x => x.Date.Date).Distinct())
                    {
                        oTemp = oItems.FirstOrDefault(x => x.Date == oDate);
                        if (oTemp == null)
                        {
                            oTemp = new WorkItemsDay(oDate);
                            oItems.Add(oTemp);
                        }
                        oTemp.WorkItems.AddRange(oTFSItems.Where(x => x.Date.Date == oDate).Select(x => x.WorkItems).FirstOrDefault());
                    }
                    break;
                }
            }
            UpdateListview(oItems, true);
        }
Esempio n. 4
0
        private void LoadTFSCSV()
        {
            frmLoginSendHaxCom oLogin = new frmLoginSendHaxCom {
                LoginURL = TimeKeeperBaseURL
            };

            oLogin.openMode        = frmLoginSendHaxCom.OpenMode.Search;
            oLogin.optDays.Enabled = false;
            oLogin.optSel.Enabled  = false;
            if (oLogin.ShowDialog() == DialogResult.OK)
            {
                List <WorkItemsDay> oItems = new List <WorkItemsDay>();
                List <CsvReg>       regs   = getHaxComTFSTime(oLogin.PHPSession, dtpFrom.Value, DateTime.Today, oLogin.chkAll.Checked, (oLogin.CHKBug.Checked || oLogin.chkPBI.Checked || oLogin.chkOther.Checked), oLogin.chkMeeting.Checked, oLogin.chkPrjtLess.Checked, oLogin.chkNonBillable.Checked, oLogin.chkCapitalized.Checked);
                var oDataSource            = oDataSources.First(x => x.Type == Datasourcetype.TFS);
                var outlookDataSource      = oDataSources.FirstOrDefault(x => x.Type == Datasourcetype.Outlook);
                //gets rest of TFS data using the TFS IDS
                var tfsItems = WorkItemMapper.GetHistoricalWorkitemsByIDs(oDataSource.ServerUrl, oDataSource.ProjectName, oDataSource.User, regs.Select(x => x.TFSId).Distinct());
                //assembles the listview
                foreach (DateTime dDate in regs.Select(x => x.Date).Distinct())
                {
                    var oTemp = new WorkItemsDay(dDate);
                    foreach (CsvReg oReg in regs.Where(x => x.Date == dDate))
                    {
                        if (oReg.TFSId == 0) //meetings
                        {
                            var oWI = new WorkItemHours();
                            oWI.HaxComID       = oReg.EntryID;
                            oWI.ID             = "meeting";
                            oWI.ProjectId      = 0;
                            oWI.ClientId       = 166;
                            oWI.SubClientId    = 5;
                            oWI.Function       = 41; //dev meeting
                            oWI.Description    = oReg.Title;
                            oWI.Title          = oReg.Title;
                            oWI.FromDatasource = outlookDataSource;
                            oWI.BillingType    = BillingType.Capitalized;
                            oWI.HaxComHours    = oReg.Hours;
                            oTemp.WorkItems.Add(oWI);
                        }
                        else
                        {
                            var oTFSI = tfsItems.FirstOrDefault(x => x.ID == oReg.TFSId.ToString());
                            if (oTFSI != null)
                            {
                                string sType = oTFSI.Type.ToUpperInvariant();
                                if (oLogin.chkAll.Checked || (sType == "BUG" && oLogin.CHKBug.Checked) || (sType == "USER STORY" && oLogin.chkPBI.Checked) ||
                                    (sType != "BUG" && sType != "PRODUCT BACKLOG ITEM" && oLogin.chkOther.Checked))
                                {
                                    oTemp.WorkItems.Add(WorkItemToWIHours(oTFSI, oReg.EntryID, oDataSource, oReg.Hours));
                                }
                            }
                        }
                    }
                    oItems.Add(oTemp);
                }
                UpdateListview(oItems, false);
            }
        }
Esempio n. 5
0
        public static List <WorkItemsDay> GetHistoricalWorkitemsByUser(string tfsURL, string projectName, string userName, DateTime dFilter, DataSource oDataSource)
        {
            try
            {
                Uri tfsUrl = new Uri(tfsURL);
                TfsTeamProjectCollection collection = new TfsTeamProjectCollection(tfsUrl);
                collection.EnsureAuthenticated();
                var workItemStore = collection.GetService <WorkItemStore>();
                var Ids           = workItemStore.Query("select [System.Id] from WorkItems " +
                                                        "where " +
                                                        (projectName != "*" ? "[System.TeamProject] = '" + projectName + "' " + "and " : "") +
                                                        "(ever [System.ChangedBy] ='" + userName + "' or [System.AssignedTo] ='" + userName + "')" +
                                                        (oDataSource.ExcludeTasks ? " and [Work Item Type] <> 'Task'" : ""));
                var              itemList = new List <WorkItemRegister>();
                DateTime         dAcum;
                WorkItemRegister oWIR = new WorkItemRegister();
                foreach (WorkItem wi in Ids)
                {
                    dAcum = wi.CreatedDate;
                    foreach (Revision revision in wi.Revisions)
                    {
                        if (revision.Fields["Assigned To"].Value.ToString() == userName)
                        {
                            if (oWIR.ID == null)
                            {
                                string PrjCode = "";
                                if (wi.Fields.Contains("Project Code"))
                                {
                                    PrjCode = wi.Fields["Project Code"].Value.ToString();
                                }
                                else if (wi.Fields.Contains("ProjectCode"))
                                {
                                    PrjCode = wi.Fields["ProjectCode"].Value.ToString();
                                }
                                oWIR = new WorkItemRegister(revision.Fields["ID"].Value.ToString(),
                                                            revision.Fields["Title"].Value.ToString(),
                                                            revision.Fields["Changed By"].Value.ToString(),
                                                            PrjCode,
                                                            revision.Fields["Work Item Type"].Value.ToString())
                                {
                                    DateFrom = dAcum
                                };
                            }
                        }
                        else
                        {
                            if (oWIR.ID != null)
                            {
                                oWIR.DateTo = (DateTime)revision.Fields["Changed Date"].Value;
                                itemList.Add(oWIR);
                                oWIR = new WorkItemRegister();
                            }
                        }
                        if (revision.Index == wi.Revisions.Count - 1)
                        {
                            dAcum = DateTime.Now;
                        }
                        else
                        {
                            dAcum = (DateTime)revision.Fields["Changed Date"].Value;
                        }
                    }
                    if (oWIR.ID != null)
                    {
                        oWIR.DateTo = dAcum;
                        itemList.Add(oWIR);
                        oWIR = new WorkItemRegister();
                    }
                }

                var      SplittedItemList = new List <WorkItemRegister>();
                DateTime dTempF;
                DateTime dTempT;
                foreach (WorkItemRegister oRow in itemList)
                {
                    dTempF = oRow.DateFrom;
                    while (dTempF < oRow.DateTo)
                    {
                        dTempT = dTempF.AddDays(1).Date;
                        if (dTempT > oRow.DateTo)
                        {
                            dTempT = oRow.DateTo;
                        }
                        SplittedItemList.Add(oRow.DuplicateWithDates(dTempF, dTempT));
                        dTempF = dTempT;
                    }
                }


                dTempF = dFilter;//SplittedItemList.Select(x => x.DateFrom).Min();
                dTempT = SplittedItemList.Select(x => x.DateFrom).Max();
                List <WorkItemsDay> groupedList = new List <WorkItemsDay>();
                WorkItemHours       oTemp;
                for (var day = dTempF.Date; day.Date <= dTempT.Date; day = day.AddDays(1))
                {
                    WorkItemsDay oRow = new WorkItemsDay(day);
                    foreach (WorkItemRegister wi in SplittedItemList.Where(x => x.DateFrom.Date == day.Date))
                    {
                        oTemp = oRow.WorkItems.FirstOrDefault(x => x.ID == wi.ID);
                        if (oTemp == null)
                        {
                            oTemp = new WorkItemHours(wi)
                            {
                                FromDatasource = oDataSource
                            };
                            oRow.WorkItems.Add(oTemp);
                        }
                        else
                        {
                            oTemp.Hours = oTemp.Hours.Add(wi.timeSpan);
                        }
                    }
                    groupedList.Add(oRow);
                }
                return(groupedList);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception retrieving data: {0}", ex.Message);
                return(new List <WorkItemsDay>());
            }
        }