public async System.Threading.Tasks.Task <DetailedReport> FullDetailedReport(DetailedReportParams requestParameters) { var report = await Detailed(requestParameters); if (report.TotalCount < report.PerPage) { return(report); } var pageCount = (report.TotalCount + report.PerPage - 1) / report.PerPage; DetailedReport resultReport = null; for (var page = 1; page <= pageCount; page++) { requestParameters.Page = page; var pagedReport = await Detailed(requestParameters); if (resultReport == null) { resultReport = pagedReport; } else { resultReport.Data.AddRange(pagedReport.Data); } } return(resultReport); }
public DetailedReport FullDetailedReport(DetailedReportParams requestParameters) { var report = this.Detailed(requestParameters); if (report.TotalCount < report.PerPage) { return(report); } var pageCount = (report.TotalCount + report.PerPage - 1) / report.PerPage; DetailedReport resultReport = null; for (var page = 1; page <= pageCount; page++) { requestParameters.Page = page; var pagedReport = Detailed(requestParameters); if (resultReport == null) { resultReport = pagedReport; } else { resultReport.Data.AddRange(pagedReport.Data); } } return(resultReport); }
public static double GetDurationInHours(this DetailedReport report) { var seconds = report.Duration / 1000; var hours = seconds / 3600.0; return(hours); }
private int ExtractIssueId(DetailedReport report) { // look for integers in the description var integerMatches = Regex.Match(report.Description, @"\d+"); if (integerMatches.Success) { return(Convert.ToInt32(integerMatches.Groups[0].Value)); } else { // no integer found in the description, determine issue to track based on project name if (_projectNameMapping.ContainsKey(report.Project)) { return(_projectNameMapping[report.Project]); } } throw new KeyNotFoundException("Unable to determine issue id"); }
public IHttpActionResult EvaluateQuiz(EvalutionAnswer evalutionAnswer) { List <int> qIDs = new List <int>(); foreach (var item in evalutionAnswer.QuesAnswers) { qIDs.Add(item.QuestionID); } var CorrectAnswers = db.Questions .AsEnumerable() .Where(x => qIDs.Contains(x.QuestionId)) .OrderBy(x => { return(Array.IndexOf(qIDs.ToArray(), x.QuestionId)); }) .Select(z => new { z.Answer, z.Marks }) .ToList(); int i = 0, CAnswer = 0, WAnswer = 0, UAttempted = 0; decimal TMarks = 0; DetailedReport detailedReport = new DetailedReport(); Report report = new Report(); foreach (var item in evalutionAnswer.QuesAnswers) { detailedReport.AttemptedAnswer = item.MarkedAnswer; detailedReport.CorrectAnswer = CorrectAnswers[i].Answer; detailedReport.QuizId = evalutionAnswer.QuizId; detailedReport.QuestionId = item.QuestionID; detailedReport.UserId = evalutionAnswer.UserId; if (item.MarkedAnswer == CorrectAnswers[i].Answer) { TMarks += CorrectAnswers[i].Marks; CAnswer++; } else if (item.MarkedAnswer == 0) { UAttempted++; } else { WAnswer++; } i++; if (db.Quizs.FirstOrDefault(x => x.QuizId == evalutionAnswer.QuizId).QuizType == "Scheduled") { db.DetailedReports.Add(detailedReport); db.SaveChanges(); } } report.CorrectAnswers = CAnswer; report.WrongAnswers = WAnswer; report.UnattemptedAnswers = UAttempted; report.TimeTaken = evalutionAnswer.TimeTaken; //Here CorrectAnswers.Count() is TotalQuestions report.Accuracy = (CAnswer * 100) / CorrectAnswers.Count(); report.MarksScored = TMarks; report.QuizType = db.Quizs.FirstOrDefault(x => x.QuizId == evalutionAnswer.QuizId).QuizType; report.UserId = evalutionAnswer.UserId; report.QuizId = evalutionAnswer.QuizId; var userSchedule = db.UserSchedules.FirstOrDefault(x => x.QuizScheduleId == evalutionAnswer.QuizScheduleId && x.UserId == evalutionAnswer.UserId && x.QuizId == evalutionAnswer.QuizId); if (userSchedule != null) { userSchedule.Taken = true; } db.Reports.Add(report); db.SaveChanges(); return(Ok()); }
public void readData() { detail = new DetailedReport(); con = new PLCConnection(); setTimeRanges(); try { // creates a tag to read B3:0, 1 item, from LGX ip address 192.168.0.100 // The last entry in this new tag is the element count. It is currently // set to 1 //public Tag(string ipAddress, string path, CpuType cpuType, string name, int elementSize, int elementCount, int debugLevel = 0) //string name is the textual name of the tag in plc //elementSize is the size of the element in bytes //elementCount elements count: 1- single, n-array //public Tag(string ipAddress, string path, CpuType cpuType, string name, int elementSize, int elementCount, int debugLevel = 0) var tag5 = new Tag("10.14.6.100", "1, 0", CpuType.LGX, "REPORT_DINT[0]", 4, 6, 0); var tag6 = new Tag("10.14.6.100", "1, 0", CpuType.LGX, "REPORT_FLOAT[12]", 4, 3, 0); var tag12 = new Tag("10.14.6.100", "1, 0", CpuType.LGX, "REPORT_INT[8]", 2, 2, 0); using (var client = new Libplctag()) { // add the tag client.AddTag(tag5); client.AddTag(tag6); client.AddTag(tag12); //client.AddTag(tag2); // check that the tag has been added, if it returns pending we have to retry while (client.GetStatus(tag5) == Libplctag.PLCTAG_STATUS_PENDING) { Thread.Sleep(100); } // check that the tag has been added, if it returns pending we have to retry while (client.GetStatus(tag6) == Libplctag.PLCTAG_STATUS_PENDING) { Thread.Sleep(100); } // check that the tag has been added, if it returns pending we have to retry while (client.GetStatus(tag12) == Libplctag.PLCTAG_STATUS_PENDING) { Thread.Sleep(100); } // if the status is not ok, we have to handle the error if (client.GetStatus(tag5) != Libplctag.PLCTAG_STATUS_OK) { con.setDownbit(-5); using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\KE_PLCData\Documents\ReportErrorLogging\ErrorLog.txt", true)) { file.WriteLine("Error occured at: " + DateTime.Now + Convert.ToString((client.GetStatus(tag5))) + ("\n" + $"Five Minute Data tag 5 Read Error setting up tag internal state. Error{ client.DecodeError(client.GetStatus(tag5))}\n")); } return; } // if the status is not ok, we have to handle the error if (client.GetStatus(tag6) != Libplctag.PLCTAG_STATUS_OK) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\KE_PLCData\Documents\ReportErrorLogging\ErrorLog.txt", true)) { file.WriteLine("Error occured at: " + DateTime.Now + Convert.ToString((client.GetStatus(tag6))) + ("\n" + $"Five Minute Data tag 6 Read Error setting up tag internal state. Error{ client.DecodeError(client.GetStatus(tag6))}\n")); } return; } // if the status is not ok, we have to handle the error if (client.GetStatus(tag12) != Libplctag.PLCTAG_STATUS_OK) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\KE_PLCData\Documents\ReportErrorLogging\ErrorLog.txt", true)) { file.WriteLine("Error occured at: " + DateTime.Now + Convert.ToString((client.GetStatus(tag12))) + ("\n" + $"Five Minute Data tag 6 Read Error setting up tag internal state. Error{ client.DecodeError(client.GetStatus(tag12))}\n")); } return; } // Execute the read var result = client.ReadTag(tag5, DataTimeout); // Execute the read var result1 = client.ReadTag(tag6, DataTimeout); // Execute the read var result2 = client.ReadTag(tag12, DataTimeout); // Check the read operation result if (result != Libplctag.PLCTAG_STATUS_OK) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\KE_PLCData\Documents\ReportErrorLogging\ErrorLog.txt", true)) { file.WriteLine("Error occured at: " + DateTime.Now + Convert.ToString(($"Five Minute Data Read ERROR: Unable to read the data! Got error code {result}: {client.DecodeError(result)}\n"))); } return; } if (result1 != Libplctag.PLCTAG_STATUS_OK) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\KE_PLCData\Documents\ReportErrorLogging\ErrorLog.txt", true)) { file.WriteLine("Error occured at: " + DateTime.Now + Convert.ToString(($"Five Minute Data Read ERROR: Unable to read the data! Got error code {result1}: {client.DecodeError(result1)}\n"))); } return; } if (result2 != Libplctag.PLCTAG_STATUS_OK) { using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\KE_PLCData\Documents\ReportErrorLogging\ErrorLog.txt", true)) { file.WriteLine("Error occured at: " + DateTime.Now + Convert.ToString(($"Five Minute Data Read ERROR: Unable to read the data! Got error code {result2}: {client.DecodeError(result2)}\n"))); } return; } // read the data from the array that was retrieved from the PLC //double integer values var plantfeedtotaltons = client.GetInt32Value(tag5, 0 * tag5.ElementSize); var cleancoaltotaltons = client.GetInt32Value(tag5, 1 * tag5.ElementSize); var stokercoaltotaltons = client.GetInt32Value(tag5, 2 * tag5.ElementSize); var bypasstotaltons = client.GetInt32Value(tag5, 3 * tag5.ElementSize); var refusetotaltons = client.GetInt32Value(tag5, 4 * tag5.ElementSize); var scalpedtotaltons = client.GetInt32Value(tag5, 5 * tag5.ElementSize); //float values //var yield = client.GetFloat32Value(tag6, 0 * tag6.ElementSize); //mag minutes float 12 needs added to the desktop reporting //grand total number like the coal values var magmins = client.GetFloat32Value(tag6, 0 * tag6.ElementSize); var plantfeedrunmins = client.GetFloat32Value(tag6, 1 * tag6.ElementSize); var downminstotal = client.GetFloat32Value(tag6, 2 * tag6.ElementSize); //int 16 values var plantfeedtph = client.GetInt16Value(tag12, 0 * tag12.ElementSize); var cleancoaltph = client.GetInt16Value(tag12, 1 * tag12.ElementSize); //code about this needs to be here and this data from the PLC needs used for updating DetailedReport table //it is at the top for hard code testing detail = new DetailedReport(); detail.createDetailedReport(plantfeedtotaltons, cleancoaltotaltons, plantfeedtph, cleancoaltph, downminstotal, plantfeedrunmins, magmins); try { //Insert data from PLC into FiveMinuteData table every five minute read dh.executeSql("Insert INTO FiveMinuteData(created_at, plantname, plantfeedtons, cleantons, stokertons, bypasstons, refusetons, scalpedtons) VALUES " + "(GETDATE(), 'Kanawha Eagle', '" + plantfeedtotaltons + "', '" + cleancoaltotaltons + "', '" + stokercoaltotaltons + "', '" + bypasstotaltons + "', '" + refusetotaltons + "', '" + scalpedtotaltons + "')"); }catch (SqlException se) { //writing data to a text file to observe errors for troubleshooting using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\KE_PLCData\Documents\ReportErrorLogging\ErrorLog.txt", true)) { file.WriteLine("Error occurred at Five Minute Data insert to database: " + DateTime.Now + " \r\n" + se + "\r\n"); } return; } client.RemoveTag(tag5); client.RemoveTag(tag6); } } catch (Exception ex) { //writing errors to text file for troubleshooting using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\KE_PLCData\Documents\ReportErrorLogging\ErrorLog.txt", true)) { file.WriteLine("Error occurred at Five Minute Data insert to database: " + DateTime.Now + " \r\n" + ex + "\r\n"); } return; } }