Exemplo n.º 1
0
 public SummaryDetailsForm(DataRow Person, SummaryDetails summaryDetails) : base(summaryDetails, Person)
 {
     this.summaryDetails = summaryDetails;
     this.Person         = Person;
     Tab_SummaryDetail_Comp();
     Tab_Summary_Comp();
 }
Exemplo n.º 2
0
        public MainProgram()
        {
            try
            {
                data_Import = Data_Import.Singleton();

                if (!data_Import.CheckConnectionToDataBase())
                {
                    Environment.Exit(0);
                }

                //Widocznoś Maina dla Wszystkich.
                Self = this;

                //Pobranie danych z bazy dla dostępów osób logujących się do programy
                Access = data_Import.Load_Access();
                //Tworzenie Użytkowanika
                CreateUsers NewUsers = new CreateUsers(Access);
                //Inicjalizowanie programu
                InitializeComponent();
                action         = new Action(this, data_Import);
                admin          = new Admin();
                summaryDetails = new SummaryDetails();

                //Budowanie Formsa w zależności od uprawnień
                buildForm.Tab_Control_Add(Access, this, action, summaryDetails, admin, data_Import);

                if (ApplicationDeployment.IsNetworkDeployed)
                {
                    toolStripStatusLabel1.Text = ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString() + " Beta Version";
                }
                else
                {
                    toolStripStatusLabel1.Text = "0.5.0.40  Beta Portable Version";
                }

                if (Environment.UserName.ToString() == "BartkKon")
                {
                    string Link = data_Import.CheckLink();
                    toolStripStatusLabel1.Text = toolStripStatusLabel1.Text + "      " + Link;
                }
            }
            catch (Exception ex)
            {
                LogSingleton.Instance.SaveLog(ex.Message);
            }
        }
Exemplo n.º 3
0
        public List <SummaryDetails> GetQRFSummaryDetails(QRFSummaryGetRes qrfSummaryGetRes, string token)
        {
            List <SummaryDetails> summaryDetails = new List <SummaryDetails>();

            try
            {
                var totalSummaryDetails = qrfSummaryGetRes.SummaryDetailsInfo.Count;
                if (qrfSummaryGetRes.ResponseStatus.Status == "Success" && totalSummaryDetails > 0)
                {
                    int counter = 0;
                    foreach (var summary in qrfSummaryGetRes.SummaryDetailsInfo)
                    {
                        var objSummary = new SummaryDetails();
                        objSummary.Day = summary.Day;
                        objSummary.OriginalItineraryDate = DateTime.Parse(summary.OriginalItineraryDate.ToString()).ToString("dd MMM yy");
                        objSummary.OriginalItineraryDay  = summary.OriginalItineraryDay;
                        objSummary.PlaceOfService        = summary.PlaceOfService;
                        objSummary.OriginalItineraryName = summary.OriginalItineraryName;
                        //if (counter == 0)
                        //{
                        //    objSummary.OriginalItineraryName = "ARRIVE AT " + summary.OriginalItineraryName.Split('-')[0];
                        //}
                        //else if (counter == totalSummaryDetails - 1)
                        //{
                        //    objSummary.OriginalItineraryName = "DEPART FROM " + summary.OriginalItineraryName.Split('-')[0];
                        //}
                        //else
                        //{
                        //    objSummary.OriginalItineraryName = summary.OriginalItineraryName;
                        //}

                        foreach (var itinerary in summary.OriginalItineraryDetails)
                        {
                            var objOriginal = new OriginalItineraryDetails();
                            objOriginal.PositionId  = itinerary.PositionId;
                            objOriginal.Allocation  = itinerary.Allocation;
                            objOriginal.NumberOfPax = itinerary.NumberOfPax;
                            objOriginal.Supplier    = itinerary.Supplier;
                            objOriginal.OriginalItineraryDescription = itinerary.OriginalItineraryDescription;
                            objOriginal.ProductType            = itinerary.ProductType;
                            objOriginal.TLRemarks              = itinerary.TLRemarks;
                            objOriginal.OPSRemarks             = itinerary.OPSRemarks;
                            objOriginal.IsDeleted              = itinerary.IsDeleted;
                            objOriginal.KeepAs                 = itinerary.KeepAs;
                            objOriginal.ProductCategoryId      = itinerary.ProductCategoryId;
                            objOriginal.ProductCategory        = itinerary.ProductCategory;
                            objOriginal.ProductTypeChargeBasis = itinerary.ProductTypeChargeBasis;
                            objOriginal.BuyCurrency            = itinerary.BuyCurrency;
                            objOriginal.StartTime              = itinerary.StartTime;
                            objOriginal.EndTime                = itinerary.EndTime;
                            objSummary.OriginalItineraryDetails.Add(objOriginal);
                        }
                        summaryDetails.Add(objSummary);
                        counter++;
                    }
                    //model.SummaryDetails = summaryDetails;
                }
            }
            catch (Exception ex)
            {
            }

            return(summaryDetails);
        }
Exemplo n.º 4
0
 public Solution(string id)
 {
     this.ID_DARP   = id;
     SummaryDetails = new SummaryDetails();
 }
Exemplo n.º 5
0
        public void ExecuteMetaheuristic(ref Solution bestSolution)
        {
            int      bestIteration   = 0;
            Solution partialSolution = GenericCopier <Solution> .DeepCopy(bestSolution);

            int            control_Diversify = 0;
            SummaryDetails summary           = new SummaryDetails();

            Splash.SplashGlobalData.SetSplashData(Constants.SPLASH_BEST_SOLUTION, bestSolution.Fitness);
            double pertCost = 0, vnsCost = 0;

            int iterations = 0;

            //Guardar coste inicial.
            summary.ILSSummary.InitCost = bestSolution.Parc_Cost;
            for (int i = 0; iterations < _ilsSettings.MaxILSIterations && i < _ilsSettings.MaxILSNoImprovement; i++)
            {
                //Control de intensificación-diversificación.
                if (i % _DIVERSIFY_MAX == 0)
                {
                    _diversify--;
                }
                _diversify = _diversify < 3 ? 3 : _diversify;
                if (i % 100 == 0)
                {
                    _diversify = _DIVERSIFY_MAX;
                }
                //Guardar valores estadísticos.
                var initCost    = partialSolution.Parc_Cost;
                var initFitness = partialSolution.Fitness;

                Splash.SplashGlobalData.SetSplashData(Constants.SPLASH_ILS_TOTAL_ITERATIONS, iterations + 1);
                //Apply VNS local search.
                _vns.ExecuteMetaheuristic(ref partialSolution);


                //Validator.ValidateSolution(ref partialSolution, _problem);
                bool feasible = partialSolution.Feasible;
                //Guardar valores estadísticos.
                vnsCost = Costs.ParcialCostSolution(partialSolution, _problem); // partialSolution.Parc_Cost;
                var vnsFitness = partialSolution.Fitness;

                if (vnsFitness < initFitness)
                {
                    summary.ILSSummary.TotalImpPrevious++; //Incrementar el número de veces que se mejora la solución previa (perturbada).
                }
                if (bestSolution.Feasible)
                {
                    if (partialSolution.Feasible && (Math.Round(partialSolution.Fitness, 2) < Math.Round(bestSolution.Fitness, 2)))
                    {
                        bestSolution = GenericCopier <Solution> .DeepCopy(partialSolution);

                        //Actualizar la mejor solución con los nuevos parámetros.
                        control_Diversify = 0;
                        bestIteration     = i;
                        i          = 0;
                        _diversify = _DIVERSIFY_MAX;
                        summary.ILSSummary.BestIteration = iterations + 1; //Guardar mejor iteración encontrada.
                        summary.ILSSummary.TotalImpBest++;                 //Incrementar el número de veces que se mejora la mejor solución.
                        Singleton.Instance.UpdatePenaltyTerms(partialSolution);
                        Splash.SplashGlobalData.SetSplashData(Constants.SPLASH_ILS_IMPROVEMENTS, summary.ILSSummary.TotalImpBest);
                        Splash.SplashGlobalData.SetSplashData(Constants.SPLASH_BEST_SOLUTION, Math.Round(bestSolution.Fitness, 2));
                    }
                    else
                    {
                        control_Diversify++;
                    }
                }
                else
                {
                    if (partialSolution.Feasible || Math.Round(partialSolution.Fitness, 2) < Math.Round(bestSolution.Fitness, 2))
                    {
                        if (partialSolution.Feasible && summary.ILSSummary.FirstItFeasible == null)
                        {
                            summary.ILSSummary.FirstItFeasible = iterations + 1; //Guardar primera iteración factible.
                        }
                        bestSolution = GenericCopier <Solution> .DeepCopy(partialSolution);

                        control_Diversify = 0;
                        i          = 0;
                        _diversify = _DIVERSIFY_MAX;
                        summary.ILSSummary.BestIteration = iterations + 1; //Guardar mejor iteración encontrada.
                        summary.ILSSummary.TotalImpBest++;                 //Incrementar el número de veces que se mejora la mejor solución.
                        Singleton.Instance.UpdatePenaltyTerms(partialSolution);
                        //bestSolution.Fitness = Costs.EvaluationSolution(bestSolution, _problem);
                        Splash.SplashGlobalData.SetSplashData(Constants.SPLASH_ILS_IMPROVEMENTS, summary.ILSSummary.TotalImpBest);
                        Splash.SplashGlobalData.SetSplashData(Constants.SPLASH_BEST_SOLUTION, bestSolution.Fitness);
                    }
                    else
                    {
                        control_Diversify++;
                    }
                }

                if (control_Diversify > _diversify)
                {
                    partialSolution = GenericCopier <Solution> .DeepCopy(bestSolution);

                    control_Diversify = 0;
                }

                var perturbation = _perturbations.ExecutePerturbation(ref partialSolution);
                //Guardar valores estadísticos.
                pertCost = partialSolution.Parc_Cost;
                var pertFitness = partialSolution.Fitness;

                //Añadir resumen de la iteración.
                summary.VNSOperators.Add(new VNSOperators(iterations, _vns.ShiftInter, 0, _vns.WRI_IntraOP, _vns.IntraRouteInsertionOP, _vns.IntraSwap));
                summary.ILSEvolution.Add(new ILSEvolution(iterations, Math.Round(initCost, 2), Math.Round(initFitness, 2), Math.Round(vnsCost, 2), Math.Round(vnsFitness, 2), perturbation, Math.Round(pertFitness, 2), Math.Round(pertCost, 2), feasible));
                Splash.SplashGlobalData.SetSplashData(Constants.SPLASH_PROGRESS, Convert.ToDouble(Splash.SplashGlobalData.GetSplashData <double>(Constants.SPLASH_PROGRESS)) + _coef_Updater_Splash);
                //Guardar cambios de cada operador.



                iterations++;
            }

            //Recalcular con el proceso de 8 pasos y actualizar el coste.
            foreach (var vehicle in bestSolution.Vehicles)
            {
                DARPAlgorithms.EightStepsEvaluationProcedure(ref bestSolution, vehicle, _problem);
            }
            bestSolution.TotalDuration       = bestSolution.Vehicles.Sum(t => t.VehicleDuration);
            bestSolution.TimeWindowViolation = bestSolution.Vehicles.Sum(t => t.TotalTimeWindowViolation);
            bestSolution.RideTimeViolation   = bestSolution.Vehicles.Sum(r => r.TotalRideTimeViolation);
            bestSolution.DurationViolation   = bestSolution.Vehicles.Sum(d => d.TotalDurationViolation);
            bestSolution.LoadViolation       = bestSolution.Vehicles.Sum(l => l.TotalLoadViolation);
            bestSolution.TotalWaitingTime    = bestSolution.Vehicles.Sum(t => t.TotalWaitingTime);
            DARPAlgorithms.UpdateConstraintsSolution(ref bestSolution, _problem);
            bestSolution.Fitness   = Costs.EvaluationSolution(bestSolution, _problem);
            bestSolution.Parc_Cost = Costs.ParcialCostSolution(bestSolution, _problem);

            summary.ILSSummary.TotalIterations = iterations + 1;
            summary.ILSSummary.FinalCost       = bestSolution.Parc_Cost;


            bestSolution.SummaryDetails = summary;
        }
Exemplo n.º 6
0
        public void Tab_Control_Add(DataTable Access, MainProgram mainProgram, Action action, SummaryDetails summaryDetails, Admin admin, Data_Import ImportData)
        {
            Person = Access.Rows[0];

            Users User = Users.Singleton();

            //
            // Tab_Action
            //
            if (User.ActionTab)
            {
                TabPage tab_Action = new TabPage();
                mainProgram.TabControl.Controls.Add(tab_Action);
                tab_Action.Location = new System.Drawing.Point(4, 22);
                tab_Action.Name     = "tab_Action";
                tab_Action.Padding  = new Padding(3);
                tab_Action.Size     = new System.Drawing.Size(1826, 877);
                tab_Action.TabIndex = 0;
                tab_Action.Text     = "Action";
                tab_Action.UseVisualStyleBackColor = true;

                //Tab_Action_Comp();
                _ = new ActionForm(action);
                action.Action_NoChangeInAction();
            }
            //
            // tab_SummaryDetail
            //
            if (User.SummaryTab)
            {
                TabPage tab_SummaryDetail = new TabPage
                {
                    Location = new System.Drawing.Point(4, 22),
                    Name     = "tab_Summary",
                    Size     = new System.Drawing.Size(1826, 877),
                    TabIndex = 1,
                    Text     = "Summary Detail",
                    UseVisualStyleBackColor = true
                };

                mainProgram.TabControl.Controls.Add(tab_SummaryDetail);

                TabPage tab_Summary = new TabPage
                {
                    Location = new System.Drawing.Point(4, 22),
                    Name     = "tab_SummaryS",
                    Size     = new System.Drawing.Size(1826, 877),
                    TabIndex = 2,
                    Text     = "Summary",
                    UseVisualStyleBackColor = true
                };

                mainProgram.TabControl.Controls.Add(tab_Summary);
                _ = new SummaryDetailsForm(Person, summaryDetails);
            }

            //
            // Tab Statistic- dane statystyczne
            //
            if (User.StatisticTab)
            {
                _ = new StatisticTabGenerator();
            }

            //
            // Tab Platform Savings - dane statystyczne
            //
            if (User.PlatformTab)
            {
                _ = new PlatformTabGenerator();
            }
            //
            // tab_STK
            //
            if (User.STKTab)
            {
                TabPage tab_STK = new TabPage
                {
                    Location = new System.Drawing.Point(4, 22),
                    Name     = "tab_STK",
                    Size     = new System.Drawing.Size(1826, 877),
                    TabIndex = 5,
                    Text     = "STK3",
                    UseVisualStyleBackColor = true
                };

                mainProgram.TabControl.Controls.Add(tab_STK);

                Tab_STK_Comp();
            }
            //
            // tab_Quantity
            //
            if (User.QuantityTab)
            {
                TabPage tab_Quantity = new TabPage
                {
                    Location = new System.Drawing.Point(4, 22),
                    Name     = "tab_Quantity",
                    Size     = new System.Drawing.Size(1826, 877),
                    TabIndex = 6,
                    Text     = "Quantity",
                    UseVisualStyleBackColor = true
                };

                mainProgram.TabControl.Controls.Add(tab_Quantity);

                Tab_Quantity_Comp();
            }
            //
            // tab_Admin
            //
            if (User.AdminTab)
            {
                TabPage tab_Admin = new TabPage
                {
                    Location = new System.Drawing.Point(4, 22),
                    Name     = "tab_Admin",
                    Size     = new System.Drawing.Size(1826, 877),
                    TabIndex = 7,
                    Text     = "Administration ",
                    UseVisualStyleBackColor = true
                };

                mainProgram.TabControl.Controls.Add(tab_Admin);

                _ = new AdminForm(mainProgram, action, admin, ImportData);

                TabPage tab_AdminAction = new TabPage
                {
                    Location = new System.Drawing.Point(4, 22),
                    Name     = "tab_AdminAction",
                    Size     = new System.Drawing.Size(1826, 877),
                    TabIndex = 8,
                    Text     = "Action Admin",
                    UseVisualStyleBackColor = true,
                };

                mainProgram.TabControl.Controls.Add(tab_AdminAction);

                _ = new ModifiActionForm(tab_AdminAction);
            }
        }
        public async Task <IActionResult> GetData()
        {
            SummaryDetails quiz = new SummaryDetails();

            XmlDetails  xmldtl = new XmlDetails();
            XmlDocument doc    = new XmlDocument();


            using (var transaction = _context.Database.BeginTransaction())
            {
                string Qtytype    = "";
                string XmlContent = "";
                try
                {
                    XmlContent     = Request.Form["dr"];
                    quiz.UserName  = Request.Form["USER_NAME"];
                    quiz.UserEmail = Request.Form["USER_EMAIL"];
                    quiz.UserId    = Request.Form["USER_ID"];
                    quiz.Title     = Request.Form["qt"];

                    if (XmlContent != "")
                    {
                        doc.LoadXml(XmlContent);
                        XmlNodeList NodeList = doc.GetElementsByTagName("quizReport");

                        if (NodeList.Count > 0 && NodeList != null)
                        {
                            List <QuestionDetails> QuestionDetail = new List <QuestionDetails>();
                            foreach (XmlNode node in NodeList)
                            {
                                if (node.ChildNodes != null && node.ChildNodes.Count > 0)
                                {
                                    quiz.Score          = Convert.ToInt32(Request.Form["tp"]);
                                    quiz.PassingPercent = Convert.ToDecimal(Request.Form["psp"]);
                                    quiz.PassingScore   = Convert.ToDecimal(Request.Form["ps"]);
                                    quiz.IsPassed       = Convert.ToBoolean(node.ChildNodes[1].Attributes["passed"].Value);
                                    quiz.TimeTaken      = Convert.ToInt32(node.ChildNodes[1].Attributes["time"].Value);
                                    quiz.Date           = Convert.ToDateTime(node.ChildNodes[1].Attributes["finishTimestamp"].Value);
                                    if (node.ChildNodes[3].ChildNodes.Count > 0)
                                    {
                                        quiz.TotalQuestion    = Convert.ToInt32(node.ChildNodes[3].ChildNodes[0].Attributes["totalQuestions"].Value);
                                        quiz.AnsweredQuestion = Convert.ToInt32(node.ChildNodes[3].ChildNodes[0].Attributes["answeredQuestions"].Value);
                                    }
                                    else
                                    {
                                        quiz.TotalQuestion    = 0;
                                        quiz.AnsweredQuestion = 0;
                                    }
                                    quiz.Percentage  = Convert.ToDecimal(node.ChildNodes[1].Attributes["percent"].Value);
                                    quiz.CreatedDate = DateTime.Now;

                                    _context.SummaryDetails.Add(quiz);
                                    _context.SaveChanges();


                                    xmldtl.SummaryDetailId = (quiz.Id == null ? 0 : quiz.Id);
                                    xmldtl.XmlDetail       = Convert.ToString(XmlContent);
                                    xmldtl.CreatedDate     = DateTime.Now;

                                    _context.XmlDetails.Add(xmldtl);
                                    _context.SaveChanges();


                                    if (node.ChildNodes[2].ChildNodes.Count > 0)
                                    {
                                        foreach (XmlNode Qtnlst in node.ChildNodes[2].ChildNodes)
                                        {
                                            Qtytype = "";
                                            if (Qtnlst.LocalName == "multipleChoiceQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);


                                                int crtansid  = Convert.ToInt32(Qtnlst.ChildNodes[2].Attributes["correctAnswerIndex"].Value);
                                                int useransid = Convert.ToInt32(Qtnlst.ChildNodes[2].Attributes["userAnswerIndex"].Value);

                                                que.CorrectAnswer = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[crtansid].InnerText);
                                                que.UserSelection = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[useransid].InnerText);

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "multipleResponseQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                string crtans = "", uselect = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2])
                                                {
                                                    bool crtansid  = Convert.ToBoolean(item.Attributes["correct"].Value);
                                                    bool useransid = Convert.ToBoolean(item.Attributes["selected"].Value);

                                                    if (crtansid == true)
                                                    {
                                                        crtans += item.InnerText + ",";
                                                    }
                                                    if (useransid == true)
                                                    {
                                                        uselect += item.InnerText + ",";
                                                    }
                                                }
                                                crtans            = crtans.Trim(',');
                                                uselect           = uselect.Trim(',');
                                                que.CorrectAnswer = crtans;
                                                que.UserSelection = uselect;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "trueFalseQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                int crtansid  = Convert.ToInt32(Qtnlst.ChildNodes[2].Attributes["correctAnswerIndex"].Value);
                                                int useransid = Convert.ToInt32(Qtnlst.ChildNodes[2].Attributes["userAnswerIndex"].Value);

                                                que.CorrectAnswer = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[crtansid].InnerText);
                                                que.UserSelection = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[useransid].InnerText);

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "typeInQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                que.UserSelection = Convert.ToString(Qtnlst.Attributes["userAnswer"].Value);
                                                string accpAns = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2])
                                                {
                                                    accpAns += item.InnerText + ",";
                                                }
                                                accpAns           = accpAns.Trim(',');
                                                que.CorrectAnswer = accpAns;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "numericQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                que.UserSelection = Convert.ToString(Qtnlst.Attributes["userAnswer"].Value);
                                                string accpAns = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2])
                                                {
                                                    accpAns += item.InnerText + ",";
                                                }
                                                accpAns           = accpAns.Trim(',');
                                                que.CorrectAnswer = accpAns;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "sequenceQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                Dictionary <int, string> crtans = new Dictionary <int, string>();
                                                string uselect    = "";
                                                string correctAns = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2])
                                                {
                                                    uselect += item.InnerText + ",";
                                                    int    i     = Convert.ToInt32(item.Attributes["originalIndex"].Value);
                                                    string value = Convert.ToString(item.InnerText);
                                                    crtans.Add(i, value);
                                                }
                                                if (crtans.Count > 0 && crtans != null)
                                                {
                                                    foreach (var i in crtans.OrderBy(m => m.Key))
                                                    {
                                                        correctAns += i.Value + ",";
                                                    }
                                                }

                                                correctAns        = correctAns.Trim(',');
                                                uselect           = uselect.Trim(',');
                                                que.UserSelection = uselect;
                                                que.CorrectAnswer = correctAns;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "matchingQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;


                                                string uselect    = "";
                                                string correctAns = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[4].ChildNodes)
                                                {
                                                    int perid = Convert.ToInt32(item.Attributes["premiseIndex"].Value);
                                                    int repid = Convert.ToInt32(item.Attributes["responseIndex"].Value);

                                                    string pertext   = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[perid].InnerText);
                                                    string matchtext = Convert.ToString(Qtnlst.ChildNodes[3].ChildNodes[repid].InnerText);


                                                    correctAns += (pertext + " - " + matchtext) + ",";
                                                }
                                                foreach (XmlNode item in Qtnlst.ChildNodes[5].ChildNodes)
                                                {
                                                    int perid = Convert.ToInt32(item.Attributes["premiseIndex"].Value);
                                                    int repid = Convert.ToInt32(item.Attributes["responseIndex"].Value);

                                                    string pertext   = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[perid].InnerText);
                                                    string matchtext = Convert.ToString(Qtnlst.ChildNodes[3].ChildNodes[repid].InnerText);


                                                    uselect += (pertext + " - " + matchtext) + ",";
                                                }
                                                correctAns        = correctAns.Trim(',');
                                                uselect           = uselect.Trim(',');
                                                que.CorrectAnswer = correctAns;
                                                que.UserSelection = uselect;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "fillInTheBlankQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                que.UserSelection = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[1].Attributes["userAnswer"].Value);

                                                string correctAns = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2].ChildNodes[1].ChildNodes)
                                                {
                                                    correctAns += item.InnerText + ",";
                                                }
                                                correctAns        = correctAns.Trim(',');
                                                que.CorrectAnswer = correctAns;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "multipleChoiceTextQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;


                                                foreach (XmlNode item in Qtnlst.ChildNodes[2])
                                                {
                                                    if (item.LocalName == "blank")
                                                    {
                                                        int uid = Convert.ToInt32(item.Attributes["userAnswerIndex"].Value);
                                                        int cid = Convert.ToInt32(item.Attributes["correctAnswerIndex"].Value);


                                                        que.UserSelection = Convert.ToString(item.ChildNodes[uid].InnerText);
                                                        que.CorrectAnswer = Convert.ToString(item.ChildNodes[cid].InnerText);
                                                    }
                                                }

                                                //int uid = Convert.ToInt32(Qtnlst.ChildNodes[2].ChildNodes[1].Attributes["userAnswerIndex"].Value);
                                                //int cid = Convert.ToInt32(Qtnlst.ChildNodes[2].ChildNodes[1].Attributes["correctAnswerIndex"].Value);

                                                //que.UserSelection = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[1].ChildNodes[uid].InnerText);
                                                //que.CorrectAnswer = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[1].ChildNodes[cid].InnerText);

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "wordBankQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;
                                                string correctAns = ""; string uselect = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2].ChildNodes)
                                                {
                                                    if (item.LocalName == "blank")
                                                    {
                                                        correctAns += item.Attributes["userAnswer"].Value + ",";
                                                        uselect    += item.InnerText + ",";
                                                    }
                                                }
                                                correctAns        = correctAns.Trim(',');
                                                uselect           = uselect.Trim(',');
                                                que.CorrectAnswer = correctAns;
                                                que.UserSelection = uselect;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "hotspotQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                //string userx = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[0].Attributes["x"].Value);
                                                //string usery = Convert.ToString(Qtnlst.ChildNodes[2].ChildNodes[0].Attributes["y"].Value);


                                                string uselect = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[2].ChildNodes)
                                                {
                                                    uselect += "x=" + item.Attributes["x"].Value + " y=" + item.Attributes["y"].Value + ",";
                                                }

                                                string corx     = Convert.ToString(Qtnlst.ChildNodes[3].ChildNodes[0].Attributes["x"].Value);
                                                string cory     = Convert.ToString(Qtnlst.ChildNodes[3].ChildNodes[0].Attributes["y"].Value);
                                                bool   ismarked = Convert.ToBoolean(Qtnlst.ChildNodes[3].ChildNodes[0].Attributes["marked"].Value);

                                                que.CorrectAnswer = "x=" + corx + " y=" + cory;
                                                uselect           = uselect.Trim(',');
                                                que.UserSelection = uselect;
                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "dndQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = Convert.ToInt32(Qtnlst.Attributes["awardedPoints"].Value);
                                                que.MaxPoints     = Convert.ToInt32(Qtnlst.Attributes["maxPoints"].Value);
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                Dictionary <int, string> crtans = new Dictionary <int, string>();
                                                string uselect    = "";
                                                string correctAns = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[4].ChildNodes)
                                                {
                                                    int    objinx = Convert.ToInt32(item.Attributes["objectIndex"].Value);
                                                    int    desinx = Convert.ToInt32(item.Attributes["destinationIndex"].Value);
                                                    string objtxt = "", destxt = "";
                                                    if (objinx < 0 && desinx >= 0)
                                                    {
                                                        objtxt = "No Match";
                                                        destxt = Qtnlst.ChildNodes[3].ChildNodes[desinx].InnerText;
                                                    }

                                                    else if (desinx < 0 && objinx >= 0)
                                                    {
                                                        objtxt = Qtnlst.ChildNodes[2].ChildNodes[objinx].InnerText;
                                                        destxt = "No Match";
                                                    }
                                                    else
                                                    {
                                                        objtxt = Qtnlst.ChildNodes[2].ChildNodes[objinx].InnerText;
                                                        destxt = Qtnlst.ChildNodes[3].ChildNodes[desinx].InnerText;
                                                    }

                                                    //string value = Convert.ToString(item.InnerText);
                                                    //crtans.Add(i, value);

                                                    correctAns += (objtxt + " - " + destxt) + ",";
                                                }
                                                foreach (XmlNode item in Qtnlst.ChildNodes[5].ChildNodes)
                                                {
                                                    int objinx = Convert.ToInt32(item.Attributes["objectIndex"].Value);
                                                    int desinx = Convert.ToInt32(item.Attributes["destinationIndex"].Value);

                                                    string objtxt = "", destxt = "";
                                                    if (objinx < 0 && desinx >= 0)
                                                    {
                                                        objtxt = "No Match";
                                                        destxt = Qtnlst.ChildNodes[3].ChildNodes[desinx].InnerText;
                                                    }
                                                    else if (desinx < 0 && objinx >= 0)
                                                    {
                                                        objtxt = Qtnlst.ChildNodes[2].ChildNodes[objinx].InnerText;
                                                        destxt = "No Match";
                                                    }
                                                    else
                                                    {
                                                        objtxt = Qtnlst.ChildNodes[2].ChildNodes[objinx].InnerText;
                                                        destxt = Qtnlst.ChildNodes[3].ChildNodes[desinx].InnerText;
                                                    }

                                                    uselect += (objtxt + " - " + destxt) + ",";
                                                }
                                                correctAns        = correctAns.Trim(',');
                                                uselect           = uselect.Trim(',');
                                                que.CorrectAnswer = correctAns;
                                                que.UserSelection = uselect;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "likertScaleQuestion")// NEED TO DISCUSSTION , WHAT ANS TO STORED
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.AwardedPoints = 0;
                                                que.MaxPoints     = 0;
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;

                                                string uselect = "";
                                                foreach (XmlNode item in Qtnlst.ChildNodes[3].ChildNodes)
                                                {
                                                    int stminx = Convert.ToInt32(item.Attributes["statementIndex"].Value);
                                                    int lblinx = Convert.ToInt32(item.Attributes["labelIndex"].Value);


                                                    string stmtxt = Qtnlst.ChildNodes[1].ChildNodes[stminx].InnerText;
                                                    string lbltxt = Qtnlst.ChildNodes[2].ChildNodes[lblinx].InnerText;

                                                    uselect += (stmtxt + " - " + lbltxt) + ",";
                                                }
                                                uselect           = uselect.Trim(',');
                                                que.CorrectAnswer = "";
                                                que.UserSelection = uselect;

                                                QuestionDetail.Add(que);
                                            }
                                            else if (Qtnlst.LocalName == "essayQuestion")
                                            {
                                                QuestionDetails que = new QuestionDetails();
                                                Qtytype           = Qtnlst.LocalName;
                                                que.QuestionType  = Qtnlst.LocalName;
                                                que.QuizQuestion  = Qtnlst.ChildNodes[0].InnerText;
                                                que.CorrectAnswer = "";
                                                que.AwardedPoints = 0;
                                                que.MaxPoints     = 0;
                                                que.UserSelection = Qtnlst.ChildNodes[1].InnerText;

                                                QuestionDetail.Add(que);
                                            }
                                        }
                                    }
                                }
                            }

                            if (QuestionDetail != null)
                            {
                                if (QuestionDetail.Count > 0)
                                {
                                    string type = "";
                                    try
                                    {
                                        foreach (var item in QuestionDetail)
                                        {
                                            type = "";
                                            try
                                            {
                                                type = item.QuestionType;
                                                item.SummaryDetailId = quiz.Id;
                                                item.CreatedDate     = DateTime.Now;
                                                _context.QuestionDetails.Add(item);
                                                _context.SaveChanges();

                                                var data = _context.XmlDetails.Where(x => x.SummaryDetailId == quiz.Id).FirstOrDefault();
                                                if (data != null)
                                                {
                                                    data.IsSuccess = true;
                                                    _context.XmlDetails.Update(data);
                                                    _context.SaveChanges();
                                                }
                                            }
                                            catch (Exception ex)
                                            {
                                                throw ex;
                                            }
                                        }
                                        transaction.Commit();
                                    }
                                    catch (Exception ex)
                                    {
                                        transaction.Rollback();

                                        string email = Request.Form["USER_EMAIL"];

                                        GenerateExcel(quiz.UserName == null ? "" : quiz.UserName, XmlContent);

                                        if (email != "" && email != null)
                                        {
                                            string bodyTemplate = System.IO.File.ReadAllText(Path.Combine("EmailTemplate/ErrorTemplate.html"));
                                            bodyTemplate = bodyTemplate.Replace("[UserName]", quiz.UserName == null ? "" : quiz.UserName);
                                            bodyTemplate = bodyTemplate.Replace("[Message]", ex.InnerException + " " + ex.Message);
                                            bool objReturn = _emailSender.SendEmailAsyncWithBody(email, "Error Message", bodyTemplate, true);
                                        }

                                        WriteToFile(ex.InnerException + " " + ex.Message, quiz.UserName == null ? "" : quiz.UserName, type);
                                    }
                                }
                            }
                        }
                    }
                }
                catch (Exception ex)
                {
                    transaction.Rollback();

                    string email = Request.Form["USER_EMAIL"];

                    GenerateExcel(quiz.UserName == null ? "" : quiz.UserName, XmlContent);

                    if (email != "" && email != null)
                    {
                        string bodyTemplate = System.IO.File.ReadAllText(Path.Combine("EmailTemplate/ErrorTemplate.html"));
                        bodyTemplate = bodyTemplate.Replace("[UserName]", quiz.UserName == null ? "" : quiz.UserName);
                        bodyTemplate = bodyTemplate.Replace("[Message]", ex.InnerException + " " + ex.Message);
                        bool Issuccess = _emailSender.SendEmailAsyncWithBody(email, "Error Message", bodyTemplate, true);
                    }

                    WriteToFile(ex.InnerException + " " + ex.Message, quiz.UserName == null ? "" : quiz.UserName, Qtytype);
                    return(Ok());
                }
            }
            //var result = new GenericResult<dynamic>();
            //result.Success = true;
            //return Ok(result);

            return(Ok());
        }
Exemplo n.º 8
0
 public SummaryDetailsFormHendler(SummaryDetails summaryDetails, DataRow Person)
 {
     this.summaryDetails = summaryDetails;
     this.Person         = Person;
     charts = new Charts(MainProgram.Self);
 }