Ejemplo n.º 1
0
        protected decimal? GetExistingEntity(string tableName, decimal? listing_id, List<Dictionary<string,object>> mapping, List<string> row, List<string> header)
        {
            OracleRepository repo = new OracleRepository();
            if (mapping.Count() > 0)
            {
                var keys = mapping.Where(x => x.ContainsKey("IS_KEY") && x["IS_KEY"] != DBNull.Value && Convert.ToInt32(x["IS_KEY"]) == 1);
                var colKeys = new Dictionary<string, object>();
                if (listing_id!=null)
                {
                    colKeys.Add("LISTING_ID", listing_id.Value);
                }
                foreach (var k in keys)
                {
                    int parsedOrdinal = 0;
                    int useHeader = 0;

                    if (k["ORDINAL"]!=DBNull.Value && int.TryParse(k["ORDINAL"].ToString(), out parsedOrdinal ))
                    {
                        if (row.Count() > parsedOrdinal)
                        {
                            if (k["DATA_TYPE"]!=DBNull.Value && k["DATA_TYPE"].ToString().StartsWith("DATE"))
                            {
                                double parseOADate = 0;
                                if (!String.IsNullOrEmpty(row[parsedOrdinal].ToString()) && double.TryParse(row[parsedOrdinal].ToString(), out parseOADate))
                                {
                                    colKeys.Add(k["COLUMN_NAME"].ToString(), DateTime.FromOADate(parseOADate));
                                }
                                else
                                {
                                    if (k["DATA_TYPE"].ToString() != "DATE_ONLY")
                                    {
                                        colKeys.Add(k["COLUMN_NAME"].ToString(), row[parsedOrdinal]);
                                    }

                                }
                            }
                            else if (k["DATA_TYPE"] != DBNull.Value && k["DATA_TYPE"].ToString() == "NUMBER")
                            {
                                if (IsNumeric(row[parsedOrdinal]))
                                {
                                    colKeys.Add(k["COLUMN_NAME"].ToString(), row[parsedOrdinal]);
                                }
                            }
                            else
                            {
                                colKeys.Add(k["COLUMN_NAME"].ToString(), row[parsedOrdinal]);
                            }

                        }

                    }
                    if (k["USE_HEADER_AS_NAME"]!=DBNull.Value && int.TryParse(k["USE_HEADER_AS_NAME"].ToString(), out useHeader))
                    {
                        if (useHeader ==1)
                        {
                            colKeys.Add("NAME", header[parsedOrdinal]);
                        }
                    }
                }
                return  repo.GetEntityID(tableName, colKeys) as decimal?;
            }
            return null;
        }