Пример #1
0
        public List <DonationUploadRecord> GetRecordList(string remark, DateTime current_date, string value_date, out int rec_cnt, out int blank_line)
        {
            rec_cnt    = 0;
            blank_line = 0;
            string[] row_list = remark.Split("******");
            List <DonationUploadRecord> result_list = new List <DonationUploadRecord>();

            for (int i = 0; i < row_list.Length; i++)
            {
                if (row_list[i].Length > 0)
                {
                    string endline             = "N";
                    DonationUploadRecord model = new DonationUploadRecord();
                    string[]             item  = GetRecordItem(row_list[i]);
                    model.Hospital = item[0];           //A
                    if (model.Hospital != "")
                    {
                        model.Fund       = item[1];                       //B
                        model.Section    = item[2];                       //C
                        model.Analytical = item[3];                       //D
                        model.Trust      = model.Fund == "52" ? 1 : 0;
                        model.Donor_name = endline == "N" ? item[4] : ""; //E
                        if (endline == "N")
                        {
                            if (DonDonorRepository.GetDonorCnt(model.Donor_name) <= 0)
                            {
                                model.Donor_id = 0;
                            }
                            else
                            {
                                model.Donor_id = DonDonorRepository.GetDonorByDesc(model.Donor_name).Id;
                            }
                        }
                        if (endline == "N")
                        {
                            model.Don_inc_exp = item[5];        //F
                            if (model.Don_inc_exp == "")
                            {
                                model.Don_inc_exp = "I";
                            }
                        }
                        else
                        {
                            model.Don_inc_exp = "I";
                        }
                        if (endline == "N")
                        {
                            model.Don_type_c = item[6];         //G
                            if (string.IsNullOrEmpty(model.Don_type_c))
                            {
                                model.Don_type_c = "2";
                                model.Don_type   = 2;
                            }
                            else if (Int32.TryParse(model.Don_type_c, out int number))
                            {
                                model.Don_type = number;
                            }
                            else
                            {
                                model.Don_type = 2;
                            }
                        }
                        else
                        {
                            model.Don_type = 0;
                        }
                        if (endline == "N")
                        {
                            model.Don_date_c = item[7];         //H
                            if (model.Don_date_c == "")
                            {
                                model.Don_date   = current_date;
                                model.Don_date_c = current_date.ToString("yyyy/MM/dd");
                            }
                            else
                            {
                                if (model.Don_date_c.Length == 8)
                                {
                                    string date = "20" + model.Don_date_c.Substring(6, 2) + model.Don_date_c.Substring(2, 2) + model.Don_date_c.Substring(0, 2);
                                    model.Don_date = DateTime.ParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture);
                                }
                                else if (model.Don_date_c.Length == 10)
                                {
                                    string date = model.Don_date_c.Substring(6, 4) + model.Don_date_c.Substring(3, 2) + model.Don_date_c.Substring(0, 2);
                                    model.Don_date = DateTime.ParseExact(date, "yyyyMMdd", CultureInfo.InvariantCulture);
                                }
                                else
                                {
                                    model.Don_date = current_date;
                                }
                            }
                        }
                        else
                        {
                            model.Don_date_c = "10/10/2014";
                            model.Don_date   = DateTime.ParseExact("10102014", "ddMMyyyy", CultureInfo.InvariantCulture);
                        }
                        if (endline == "N")
                        {
                            model.Don_purpose_c = item[8];      //I
                            if (string.IsNullOrEmpty(model.Don_purpose_c))
                            {
                                model.Don_purpose_c = "2";
                                model.Don_purpose   = 2;
                            }
                            else if (Int32.TryParse(model.Don_purpose_c, out int number))
                            {
                                model.Don_purpose = number;
                            }
                            else
                            {
                                model.Don_purpose = 2;
                            }
                        }
                        else
                        {
                            model.Don_purpose = 0;
                        }

                        model.Don_super_cat      = 0;
                        model.Don_super_cat_desc = endline == "N" ? item[9] : "";  //J
                        model.Don_cat            = 0;
                        model.Don_cat_desc       = endline == "N" ? item[10] : ""; //K
                        model.Don_subcat         = 0;
                        model.Don_subcat_desc    = endline == "N" ? item[11] : ""; //L
                        model.Don_subsubcat      = 0;
                        model.Don_subsubcat_desc = endline == "N" ? item[12] : ""; //M
                        model.Don_specific       = endline == "N" ? item[13] : ""; //N
                        if (endline == "N")
                        {
                            model.Maj_don1 = item[14];                        //O
                            model.Maj_don2 = item[15];                        //P
                            model.Maj_don3 = item[16];                        //Q
                            model.Reimb    = item[17];                        //R
                        }
                        model.Don_kind_desc = endline == "N" ? item[18] : ""; //S
                        if (endline == "N")
                        {
                            model.Don_cur_mth_c = item[19];     //T
                            if (string.IsNullOrEmpty(model.Don_cur_mth_c))
                            {
                                model.Don_cur_mth_c = "0";
                                model.Don_cur_mth   = 0;
                            }
                            else if (Decimal.TryParse(item[19], out decimal number))
                            {
                                model.Don_cur_mth = number;
                            }
                            else
                            {
                                model.Don_cur_mth = 0;
                            }
                        }
                        else
                        {
                            model.Don_cur_mth_c = "0";
                            model.Don_cur_mth   = 0;
                        }

                        endline = "Y";

                        var ds = DonationBalanceRepository.GetReserveBal(model.Hospital, model.Fund, model.Section, model.Analytical, value_date);
                        if (ds != null && ds.Tables.Count != 0 && ds.Tables[0].Rows.Count != 0)
                        {
                            model.R_begin = Convert.ToDecimal(ds.Tables[0].Rows[0]["reserve_bal_begin"]);
                            model.R_end   = Convert.ToDecimal(ds.Tables[0].Rows[0]["reserve_bal_end"]);
                        }
                        else
                        {
                            model.R_begin = 0;
                        }

                        result_list.Add(model);
                        rec_cnt = rec_cnt + 1;
                    }
                    else
                    {
                        blank_line = blank_line + 1;
                    }
                }
            }
            return(result_list);
        }