Ejemplo n.º 1
0
 public void AddForm(FormInstance form)
 {
     if (Forms.Count != 0 && !Definition.AllowMultiple)
     {
         throw new InvalidOperationException($"Multiple Form{Definition.Name} are not allowed.");
     }
     Forms.Add(form);
 }
Ejemplo n.º 2
0
        public void AddForm(FormInstance formInst)
        {
            FormInstances formList;

            if (!Forms.TryGetValue(formInst.Name, out formList))
            {
                formList = new FormInstances(formInst.Definition);
                Forms.Add(formInst.Name, formList);
            }
            formList.AddForm(formInst);
        }
Ejemplo n.º 3
0
        public TaxReturn(string filePath, TaxUniverse universe)
        {
            using var reader = new StreamReader(filePath);

            var doc = XDocument.Load(reader, LoadOptions.SetLineInfo);

            this.Year   = doc.Root.IntAttributeValue("Year");
            this.Status = doc.Root.EnumAttributeValue <FilingStatus>("FilingStatus");
            this.Forms  = new();

            TaxYearDef = universe.TaxYears[Year];

            foreach (var node in doc.Root.Elements())
            {
                switch (node.Name.LocalName)
                {
                case "Form":
                    var formInst = new FormInstance(node, TaxYearDef);
                    AddForm(formInst);
                    break;

                case "DataImporters":
                    foreach (var el in node.Elements())
                    {
                        var dataImporter = DataImporterFactory.Create(el.Name.LocalName, el.AttributeValue("File"));
                        foreach (var f in dataImporter.GetForms(TaxYearDef.Year))
                        {
                            AddForm(f.ConvertToFormInstance(TaxYearDef));
                        }
                    }
                    break;

                default:
                    throw new FileLoadException(node, "Unkown node name: " + node.Name);
                }
            }
        }