Example #1
0
        ///<summary>Returns the number of plans updated.</summary>
        private static int ProcessTrojanPlan(string trojanPlan)
        {
            //MessageBox.Show(trojanPlan);
            string[] lines = trojanPlan.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);
            //MessageBox.Show(lines[0]);
            //MessageBox.Show(lines.Length.ToString());
            string line;

            string[] fields;
            int      percent;

            string[]  splitField;                   //if a field is a sentence with more than one word, we can split it for analysis
            InsPlan   plan         = new InsPlan(); //many fields will be absent.  This is a conglomerate.
            Carrier   carrier      = new Carrier();
            ArrayList benefitList  = new ArrayList();
            bool      usesAnnivers = false;
            Benefit   ben;

            for (int i = 0; i < lines.Length; i++)
            {
                line   = lines[i];
                fields = line.Split(new char[] { '\t' });
                if (fields.Length != 3)
                {
                    continue;
                }
                //remove any trailing or leading spaces:
                fields[0] = fields[0].Trim();
                fields[1] = fields[1].Trim();
                fields[2] = fields[2].Trim();
                if (fields[2] == "")
                {
                    continue;
                }
                else                 //as long as there is data, add it to the notes
                {
                    if (plan.BenefitNotes != "")
                    {
                        plan.BenefitNotes += "\r\n";
                    }
                    plan.BenefitNotes += fields[1] + ": " + fields[2];
                }
                switch (fields[0])
                {
                //default://for all rows that are not handled below
                case "TROJANID":
                    plan.TrojanID = fields[2];
                    break;

                case "ENAME":
                    plan.EmployerNum = Employers.GetEmployerNum(fields[2]);
                    break;

                case "PLANDESC":
                    plan.GroupName = fields[2];
                    break;

                case "ELIGPHONE":
                    carrier.Phone = fields[2];
                    break;

                case "POLICYNO":
                    plan.GroupNum = fields[2];
                    break;

                case "ECLAIMS":
                    if (fields[2] == "YES")                           //accepts eclaims
                    {
                        carrier.NoSendElect = false;
                    }
                    else
                    {
                        carrier.NoSendElect = true;
                    }
                    break;

                case "PAYERID":
                    carrier.ElectID = fields[2];
                    break;

                case "MAILTO":
                    carrier.CarrierName = fields[2];
                    break;

                case "MAILTOST":
                    carrier.Address = fields[2];
                    break;

                case "MAILCITYONLY":
                    carrier.City = fields[2];
                    break;

                case "MAILSTATEONLY":
                    carrier.State = fields[2];
                    break;

                case "MAILZIPONLY":
                    carrier.Zip = fields[2];
                    break;

                case "PLANMAX":                        //eg $3000 per person per year
                    if (!fields[2].StartsWith("$"))
                    {
                        break;
                    }
                    fields[2] = fields[2].Remove(0, 1);
                    fields[2] = fields[2].Split(new char[] { ' ' })[0];
                    if (CovCatB.ListShort.Length > 0)
                    {
                        ben             = new Benefit();
                        ben.BenefitType = InsBenefitType.Limitations;
                        ben.CovCatNum   = CovCats.GetForEbenCat(EbenefitCategory.General).CovCatNum;
                        ben.MonetaryAmt = PIn.PDouble(fields[2]);
                        ben.TimePeriod  = BenefitTimePeriod.CalendarYear;
                        benefitList.Add(ben.Copy());
                    }
                    break;

                case "PLANYR":                        //eg Calendar year or Anniversary year
                    if (fields[2] != "Calendar year")
                    {
                        usesAnnivers = true;
                        //MessageBox.Show("Warning.  Plan uses Anniversary year rather than Calendar year.  Please verify the Plan Start Date.");
                    }
                    break;

                case "DEDUCT":                        //eg There is no deductible
                    ben             = new Benefit();
                    ben.BenefitType = InsBenefitType.Deductible;
                    ben.CovCatNum   = CovCats.GetForEbenCat(EbenefitCategory.General).CovCatNum;
                    ben.TimePeriod  = BenefitTimePeriod.CalendarYear;
                    if (!fields[2].StartsWith("$"))
                    {
                        ben.MonetaryAmt = 0;
                    }
                    else
                    {
                        fields[2]       = fields[2].Remove(0, 1);
                        fields[2]       = fields[2].Split(new char[] { ' ' })[0];
                        ben.MonetaryAmt = PIn.PDouble(fields[2]);
                    }
                    benefitList.Add(ben.Copy());
                    break;

                case "PREV":                        //eg 100%
                    splitField = fields[2].Split(new char[] { ' ' });
                    if (splitField.Length == 0 || !splitField[0].EndsWith("%"))
                    {
                        break;
                    }
                    splitField[0] = splitField[0].Remove(splitField[0].Length - 1, 1);                       //remove %
                    percent       = PIn.PInt(splitField[0]);
                    if (percent < 0 || percent > 100)
                    {
                        break;
                    }
                    ben             = new Benefit();
                    ben.BenefitType = InsBenefitType.Percentage;
                    ben.CovCatNum   = CovCats.GetForEbenCat(EbenefitCategory.RoutinePreventive).CovCatNum;
                    ben.Percent     = percent;
                    ben.TimePeriod  = BenefitTimePeriod.CalendarYear;
                    benefitList.Add(ben.Copy());
                    break;

                case "BASIC":
                    splitField = fields[2].Split(new char[] { ' ' });
                    if (splitField.Length == 0 || !splitField[0].EndsWith("%"))
                    {
                        break;
                    }
                    splitField[0] = splitField[0].Remove(splitField[0].Length - 1, 1);                       //remove %
                    percent       = PIn.PInt(splitField[0]);
                    if (percent < 0 || percent > 100)
                    {
                        break;
                    }
                    ben             = new Benefit();
                    ben.BenefitType = InsBenefitType.Percentage;
                    ben.CovCatNum   = CovCats.GetForEbenCat(EbenefitCategory.Restorative).CovCatNum;
                    ben.Percent     = percent;
                    ben.TimePeriod  = BenefitTimePeriod.CalendarYear;
                    benefitList.Add(ben.Copy());
                    ben             = new Benefit();
                    ben.BenefitType = InsBenefitType.Percentage;
                    ben.CovCatNum   = CovCats.GetForEbenCat(EbenefitCategory.Endodontics).CovCatNum;
                    ben.Percent     = percent;
                    ben.TimePeriod  = BenefitTimePeriod.CalendarYear;
                    benefitList.Add(ben.Copy());
                    ben             = new Benefit();
                    ben.BenefitType = InsBenefitType.Percentage;
                    ben.CovCatNum   = CovCats.GetForEbenCat(EbenefitCategory.Periodontics).CovCatNum;
                    ben.Percent     = percent;
                    ben.TimePeriod  = BenefitTimePeriod.CalendarYear;
                    benefitList.Add(ben.Copy());
                    break;

                case "MAJOR":
                    splitField = fields[2].Split(new char[] { ' ' });
                    if (splitField.Length == 0 || !splitField[0].EndsWith("%"))
                    {
                        break;
                    }
                    splitField[0] = splitField[0].Remove(splitField[0].Length - 1, 1);                       //remove %
                    percent       = PIn.PInt(splitField[0]);
                    if (percent < 0 || percent > 100)
                    {
                        break;
                    }
                    ben             = new Benefit();
                    ben.BenefitType = InsBenefitType.Percentage;
                    ben.CovCatNum   = CovCats.GetForEbenCat(EbenefitCategory.Prosthodontics).CovCatNum;
                    ben.Percent     = percent;
                    ben.TimePeriod  = BenefitTimePeriod.CalendarYear;
                    benefitList.Add(ben.Copy());
                    //does prosthodontics include crowns?
                    break;
                }        //switch
            }            //for
            //now, save this all to the database.
            //carrier
            if (carrier.CarrierName == null || carrier.CarrierName == "")
            {
                //if, for some reason, carrier is absent from the file, we can't do a thing with it.
                return(0);
            }
            //Carriers.Cur=carrier;
            Carriers.GetCurSame(carrier);
            //set calendar vs serviceyear
            if (usesAnnivers)
            {
                for (int i = 0; i < benefitList.Count; i++)
                {
                    ((Benefit)benefitList[i]).TimePeriod = BenefitTimePeriod.ServiceYear;
                }
            }
            //plan
            plan.CarrierNum = carrier.CarrierNum;
            string    command = "SELECT PlanNum FROM insplan WHERE TrojanID='" + POut.PString(plan.TrojanID) + "'";
            DataTable table   = General.GetTable(command);
            int       planNum;

            for (int i = 0; i < table.Rows.Count; i++)
            {
                planNum = PIn.PInt(table.Rows[i][0].ToString());
                //update plan
                command = "UPDATE insplan SET "
                          + "EmployerNum='" + POut.PInt(plan.EmployerNum) + "', "
                          + "GroupName='" + POut.PString(plan.GroupName) + "', "
                          + "GroupNum='" + POut.PString(plan.GroupNum) + "', "
                          + "CarrierNum='" + POut.PInt(plan.CarrierNum) + "', "
                          + "BenefitNotes='" + POut.PString(plan.BenefitNotes) + "' "
                          + "WHERE PlanNum=" + POut.PInt(planNum);
                General.NonQ(command);
                //clear benefits
                command = "DELETE FROM benefit WHERE PlanNum=" + POut.PInt(planNum);
                General.NonQ(command);
                //benefitList
                for (int j = 0; j < benefitList.Count; j++)
                {
                    ((Benefit)benefitList[j]).PlanNum = planNum;
                    Benefits.Insert((Benefit)benefitList[j]);
                }
                InsPlans.ComputeEstimatesForPlan(planNum);
            }
            return(table.Rows.Count);
            //MessageBox.Show(plan.BenefitNotes);
        }