public IEnumerator <WaitUntil> FirstTry() { lock (_instLock) { _isSceneFunctionRunning = true; foreach (Instruction i in _firstTryInst) { i.Execute(this); if (i.Type == Instruction.PRINT_INST) { yield return(new WaitUntil(() => _isUserInput)); _isUserInput = false; } else if (i.Type == Instruction.LOAD_INST) { break; } else if (i.Type == Instruction.CHECKBOX_INST) { yield return(new WaitUntil(() => PrintOutput.IsWaitingForAnswer())); yield return(new WaitUntil(() => !_checkbox_check_answers(PrintOutput.GetCheckboxAnswers()).MoveNext())); } } _isSceneFunctionRunning = false; yield break; } yield break; }
public void CheckBox(string message, List <string> options, Dictionary <List <int>, List <Instruction> > inst, bool isStrict = false) { //List<int> input = new List<int>(); PrintOutput.CheckboxToUser(message, options); _checkbox_inst = inst; _checkbox_isStrict = isStrict; //yield return new WaitUntil( () => { return PrintOutput.IsWaitingForAnswer(); }); }
public PrintOutput Create(int batchNumber, IEnumerable <Certificate> certificates) { var printOutput = new PrintOutput { Batch = new BatchData() { BatchNumber = batchNumber, BatchDate = DateTime.UtcNow }, PrintData = new List <PrintData>() }; printOutput.Batch.TotalCertificateCount = certificates.Count(); var groupedByRecipient = certificates.GroupBy(c => new { c.ContactName, c.ContactOrganisation, c.Department, c.ContactAddLine1, c.ContactAddLine2, c.ContactAddLine3, c.ContactAddLine4, c.ContactPostCode }).ToList(); printOutput.Batch.PostalContactCount = groupedByRecipient.Count; groupedByRecipient.ForEach(g => { var contactName = string.Empty; if (g.Key.ContactName != null) { contactName = g.Key.ContactName.Replace("\t", " "); } var printData = new PrintData { PostalContact = new PostalContact { Name = contactName, Department = g.Key.Department, EmployerName = g.Key.ContactOrganisation, AddressLine1 = g.Key.ContactAddLine1, AddressLine2 = g.Key.ContactAddLine2, AddressLine3 = g.Key.ContactAddLine3, AddressLine4 = g.Key.ContactAddLine4, Postcode = g.Key.ContactPostCode, CertificateCount = g.Count() }, CoverLetter = new CoverLetter { ChairName = _certificateDetails.ChairName, ChairTitle = _certificateDetails.ChairTitle }, Certificates = new List <PrintCertificate>() }; g.ToList().ForEach(c => { var learnerName = !string.IsNullOrEmpty(c.FullName) ? c.FullName : $"{c.LearnerGivenNames} {c.LearnerFamilyName}"; var gradeText = string.Empty; var grade = string.Empty; if (!string.IsNullOrWhiteSpace(c.OverallGrade) && c.OverallGrade != "No grade awarded") { gradeText = "Achieved grade "; grade = c.OverallGrade; } printData.Certificates.Add(new PrintCertificate { CertificateNumber = c.CertificateReference, ApprenticeName = $"{c.LearnerGivenNames.ProperCase()} {c.LearnerFamilyName.ProperCase(true)}", LearningDetails = new LearningDetails() { StandardTitle = c.StandardName, Level = $"LEVEL {c.StandardLevel}", Option = string.IsNullOrWhiteSpace(c.CourseOption) ? string.Empty : $"({c.CourseOption}):", GradeText = gradeText, Grade = grade, AchievementDate = !c.AchievementDate.HasValue ? string.Empty : $"{c.AchievementDate.Value:dd MMMM yyyy}" } }); }); printOutput.PrintData.Add(printData); }); return(printOutput); }
private IEnumerator <WaitUntil> _checkbox_check_answers(List <int> input) { bool goToElse = true; List <int> elseKey = null; foreach (KeyValuePair <List <int>, List <Instruction> > kv in _checkbox_inst) { if (_checkbox_isStrict) { if (Enumerable.SequenceEqual(input.OrderBy(e => e), kv.Key.OrderBy(e => e))) { goToElse = false; foreach (Instruction i in kv.Value) { i.Execute(this); if (i.Type == Instruction.PRINT_INST) { yield return(new WaitUntil(() => _isUserInput)); _isUserInput = false; } else if (i.Type == Instruction.LOAD_INST) { break; } else if (i.Type == Instruction.CHECKBOX_INST) { yield return(new WaitUntil(() => PrintOutput.IsWaitingForAnswer())); //yield return _checkbox_check_answers(PrintOutput.GetCheckboxAnswers()); } } } else if (kv.Key.Contains(CheckBoxInstr.DEFAULT_CASE)) { elseKey = kv.Key; } } else { if (kv.Key.Intersect(input).ToList().Count == input.Count) { goToElse = false; foreach (Instruction i in kv.Value) { i.Execute(this); if (i.Type == Instruction.PRINT_INST) { yield return(new WaitUntil(() => _isUserInput)); _isUserInput = false; } else if (i.Type == Instruction.LOAD_INST) { break; } else if (i.Type == Instruction.CHECKBOX_INST) { yield return(new WaitUntil(() => PrintOutput.IsWaitingForAnswer())); //yield return _checkbox_check_answers(PrintOutput.GetCheckboxAnswers()); } } } else if (kv.Key.Contains(CheckBoxInstr.DEFAULT_CASE)) { elseKey = kv.Key; } } } if (goToElse && elseKey != null) { foreach (Instruction i in _checkbox_inst[elseKey]) { i.Execute(this); if (i.Type == Instruction.PRINT_INST) { yield return(new WaitUntil(() => _isUserInput)); _isUserInput = false; } else if (i.Type == Instruction.LOAD_INST) { break; } else if (i.Type == Instruction.CHECKBOX_INST) { yield return(new WaitUntil(() => PrintOutput.IsWaitingForAnswer())); //yield return _checkbox_check_answers(PrintOutput.GetCheckboxAnswers()); } } } }
public void Create(int batchNumber, List <CertificateResponse> certificates, string fileName) { var printOutput = new PrintOutput { Batch = new BatchData() { BatchNumber = batchNumber, BatchDate = DateTime.UtcNow }, PrintData = new List <PrintData>() }; printOutput.Batch.TotalCertificateCount = certificates.Count; var groupedByRecipient = certificates.GroupBy(c => new { c.CertificateData.ContactName, c.CertificateData.ContactOrganisation, c.CertificateData.Department, c.CertificateData.ContactAddLine1, c.CertificateData.ContactAddLine2, c.CertificateData.ContactAddLine3, c.CertificateData.ContactAddLine4, c.CertificateData.ContactPostCode }).ToList(); printOutput.Batch.PostalContactCount = groupedByRecipient.Count; groupedByRecipient.ForEach(g => { var contactName = string.Empty; if (g.Key.ContactName != null) { contactName = g.Key.ContactName.Replace("\t", " "); } var printData = new PrintData { PostalContact = new PostalContact { Name = contactName, Department = g.Key.Department, EmployerName = g.Key.ContactOrganisation, AddressLine1 = g.Key.ContactAddLine1, AddressLine2 = g.Key.ContactAddLine2, AddressLine3 = g.Key.ContactAddLine3, AddressLine4 = g.Key.ContactAddLine4, Postcode = g.Key.ContactPostCode, CertificateCount = g.Count() }, CoverLetter = new CoverLetter { ChairName = "The Chair", ChairTitle = "Chair of the board" }, Certificates = new List <PrintCertificate>() }; g.ToList().ForEach(c => { var learnerName = !string.IsNullOrEmpty(c.CertificateData.FullName) ? c.CertificateData.FullName : $"{c.CertificateData.LearnerGivenNames} {c.CertificateData.LearnerFamilyName}"; var gradeText = string.Empty; var grade = string.Empty; if (!string.IsNullOrWhiteSpace(c.CertificateData.OverallGrade) && c.CertificateData.OverallGrade != "No grade awarded") { gradeText = "Achieved grade "; grade = c.CertificateData.OverallGrade; } printData.Certificates.Add(new PrintCertificate { CertificateNumber = c.CertificateReference, ApprenticeName = learnerName.NameCase(), LearningDetails = new LearningDetails() { StandardTitle = c.CertificateData.StandardName, Level = $"LEVEL {c.CertificateData.StandardLevel}", Option = string.IsNullOrWhiteSpace(c.CertificateData?.CourseOption) ? string.Empty: $"({c.CertificateData.CourseOption}):", GradeText = gradeText, Grade = grade, AchievementDate = $"{c.CertificateData.AchievementDate.Value:dd MMMM yyyy}", } }); }); printOutput.PrintData.Add(printData); }); _aggregateLogger.LogInfo("Completed Certificates to print Json ...."); var serializedPrintOutput = JsonConvert.SerializeObject(printOutput); byte[] array = Encoding.ASCII.GetBytes(serializedPrintOutput); using (var mystream = new MemoryStream(array)) { _aggregateLogger.LogInfo("Sending Certificates to print Json ...."); _fileTransferClient.Send(mystream, fileName); } }