Esempio n. 1
0
    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;
    }
Esempio n. 2
0
 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);
        }
Esempio n. 4
0
    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);
            }
        }