Exemple #1
0
        public static string GetToken(AutomateData automateData, int lastState)
        {
            const int finishStateNumber2     = 4;
            const int finishStateNumber8     = 6;
            const int finishStateNumber16    = 8;
            const int finishStateNumber      = 1;
            const int finishStateNumberOne   = 2;
            const int finishStateNumberTwo   = 4;
            const int finishStateNumberThree = 7;
            const int finishStateNumberFour  = 9;

            switch (automateData.Type)
            {
            case "identificator":
                return(IDENTIFICATOR);

            case "number10" when lastState == finishStateNumberOne:
                return(NUMBER10);

            case "number10" when lastState == finishStateNumberTwo:
                return(DECIMAL);

            case "number10" when lastState == finishStateNumber:
                return(NUMBER10);

            case "number10" when lastState == finishStateNumberThree:
                return(DECIMAL);

            case "number10" when lastState == finishStateNumberFour:
                return(NUMBER10);

            case "number2816" when lastState == finishStateNumber2:
                return(NUMBER2);

            case "number2816" when lastState == finishStateNumber8:
                return(NUMBER8);

            case "number2816" when lastState == finishStateNumber16:
                return(NUMBER16);

            default:
                return(UNKNOWN);
            }
        }
        public static void UpdateWeeklyAutomationStatus(string FileName, int TeamId)
        {
            //Retrieve data from the excel file and store it in a dictionary
            Helpers.PopulateInCollectionFromExcel(FileName, TeamId);

            var db = new AutomationDashboardEntities();
            Dictionary <string, spGetCurrentStatusOfAutomationForATeam_Result> CurrentStatus = db.spGetCurrentStatusOfAutomationForATeam(TeamId).ToDictionary(e => e.ProductArea);
            List <AutomateData>   RowsToBeInserted           = new List <AutomateData>();
            List <WeeklyTriaging> WeeklyTriagingToBeInserted = new List <WeeklyTriaging>();
            var CurrentFriday = Helpers.GetPreviousFriday(DateTime.Now).AddDays(7);

            //Filter out the rows to be inserted
            foreach (var record in Helpers.automateData)
            {
                if (!CurrentStatus.ContainsKey(record.Key))
                {
                    //Insert this data in the database as this is a new entry which does not exist in the database
                    RowsToBeInserted.Add(record.Value);
                }
                else
                {
                    //check if there is progress in the field and insert only those fields in the database

                    spGetCurrentStatusOfAutomationForATeam_Result StatusFromDatabase = CurrentStatus[record.Key];
                    AutomateData StatusFromUser = record.Value;

                    if (StatusFromUser.NoOfAutomatedTestcases > StatusFromDatabase.NoOfAutomatedTestcases ||
                        StatusFromUser.NoOfTFSTestcase > StatusFromDatabase.NoOfTFSTestcase)
                    {
                        //only then select the record for insert
                        RowsToBeInserted.Add(StatusFromUser);
                    }
                }

                //check if any modifications is done to the triaging data in the excel
                var entry = db.WeeklyTriagings.FirstOrDefault(row => row.TeamId == TeamId && row.ProductArea == record.Key && row.Date == CurrentFriday.Date);

                if ((record.Value.NoOfTestCasesDebugged > 0 && entry == null) || (entry != null && entry.NoOfTestCasesDebugged < record.Value.NoOfTestCasesDebugged))
                {
                    WeeklyTriaging triaging = new WeeklyTriaging(TeamId, record.Key, CurrentFriday, record.Value.NoOfTestCasesDebugged);
                    WeeklyTriagingToBeInserted.Add(triaging);
                }
            }

            foreach (var record in RowsToBeInserted)
            {
                //if the record exists in the database then only update the existing one
                var entry = db.AutomateDatas.FirstOrDefault(row => row.TeamId == TeamId && row.ProductArea == record.ProductArea && row.date == record.date.Date);
                if (entry == null)
                {
                    db.AutomateDatas.Add(record);
                }
                else
                {
                    entry.NoOfAutomatedTestcases = record.NoOfAutomatedTestcases;
                    entry.NoOfTFSTestcase        = record.NoOfTFSTestcase;
                    db.Entry(entry).State        = EntityState.Modified;
                }

                db.SaveChanges();
            }

            foreach (var record in WeeklyTriagingToBeInserted)
            {
                var entry = db.WeeklyTriagings.FirstOrDefault(row => row.TeamId == TeamId && row.ProductArea == record.ProductArea && row.Date == CurrentFriday.Date);
                if (entry == null)
                {
                    db.WeeklyTriagings.Add(record);
                }
                else
                {
                    entry.NoOfTestCasesDebugged = record.NoOfTestCasesDebugged;
                    db.Entry(entry).State       = EntityState.Modified;
                }
                db.SaveChanges();
            }
        }