Beispiel #1
0
        private static async Task <IEnumerable <People> > ReadFornecedorMoradasAsync(StreamReader reader)
        {
            List <People> fornecedores = new List <People>();


            int INDEX = 0;
            int INDEX_MORADA_TITULAR = 1;
            int INDEX_MORADA_TIPO    = 4;
            int INDEX_MORADA         = 5;
            int INDEX_LOCALIDADE     = 6;
            int INDEX_ZIPCODE        = 7;
            int INDEX_CONCELHO       = 8;
            int INDEX_DISTRITO       = 9;
            int INDEX_COUNTRY        = 10;

            Regex    Spliter  = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
            string   line     = string.Empty;
            TextInfo textInfo = new CultureInfo("pt-PT", false).TextInfo;

            while ((line = await reader.ReadLineAsync()) != null)
            {
                if (!string.IsNullOrWhiteSpace(line))
                {
                    string[] values = Spliter.Split(line);
                    for (int i = 0; i < values.Length; i++)
                    {
                        values[i] = values[i].Replace("\"", "");
                    }
                    Morada morada        = new Morada();
                    string moradaTitular = string.Empty;
                    if (values[INDEX_MORADA_TITULAR] != "#NULL#")
                    {
                        moradaTitular = textInfo.ToTitleCase(values[INDEX_MORADA_TITULAR].ToLower());
                    }
                    if (values[INDEX_MORADA] != "#NULL#")
                    {
                        morada.Rua = textInfo.ToTitleCase(values[INDEX_MORADA].ToLower());
                    }
                    if (values[INDEX_LOCALIDADE] != "#NULL#")
                    {
                        morada.Localidade = textInfo.ToTitleCase(values[INDEX_LOCALIDADE].ToLower());
                    }
                    if (values[INDEX_ZIPCODE] != "#NULL#")
                    {
                        morada.ZipCode = values[INDEX_ZIPCODE];
                    }
                    if (values[INDEX_COUNTRY] != "#NULL#")
                    {
                        morada.Country = textInfo.ToTitleCase(values[INDEX_COUNTRY].ToLower());
                    }
                    if (values[INDEX_CONCELHO] != "#NULL#")
                    {
                        morada.Concelho = textInfo.ToTitleCase(values[INDEX_CONCELHO].ToLower());
                    }
                    if (values[INDEX_DISTRITO] != "#NULL#")
                    {
                        morada.Distrito = textInfo.ToTitleCase(values[INDEX_DISTRITO].ToLower());
                    }
                    if (values[INDEX_MORADA_TIPO] != "#NULL#")
                    {
                        string v = values[INDEX_MORADA_TIPO];
                        if (v == "Devoluções")
                        {
                            morada.TipoMorada = TipoMorada.Devoluções;
                        }
                    }
                    else
                    {
                        morada.TipoMorada = TipoMorada.Normal;
                    }

                    var fornecedor = fornecedores.FirstOrDefault(x => x.Nome == moradaTitular);
                    if (fornecedor == null)
                    {
                        fornecedor = new People();
                        fornecedores.Add(fornecedor);
                        if (values[INDEX] != "#NULL#")
                        {
                            fornecedor.ID = int.Parse(values[INDEX]);
                        }
                        fornecedor.Nome    = moradaTitular;
                        fornecedor.Moradas = new List <Morada>();
                    }
                    fornecedor.Moradas.Add(morada);
                }
            }
            return(fornecedores);
        }
Beispiel #2
0
        private static async Task <IEnumerable <People> > ReadClientesMoradasAsync(StreamReader streamReader)
        {
            List <People> clientes = new List <People>();

            uint INDEX = 0;
            uint INDEX_NOME_CLIENTE        = 1;
            uint INDEX_CLIENTE_MORADA_TIPO = 4;
            uint INDEX_CLIENTE_RUA         = 5;
            uint INDEX_CLIENTE_LOCALIDADE  = 6;
            uint INDEX_CLIENTE_ZIPCODE     = 7;
            uint INDEX_CLIENTE_CONCELHO    = 8;
            uint INDEX_CLIENTE_DISTRITO    = 9;
            uint INDEX_CLIENTE_COUNTRY     = 10;

            string _null = "#NULL#";

            Regex    Spliter  = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))");
            string   line     = string.Empty;
            TextInfo textInfo = new CultureInfo("pt-PT", false).TextInfo;

            while ((line = await streamReader.ReadLineAsync()) != null)
            {
                if (!string.IsNullOrWhiteSpace(line))
                {
                    string[] values = Spliter.Split(line);
                    for (int i = 0; i < values.Length; i++)
                    {
                        values[i] = values[i].Replace("\"", "");
                    }
                    Morada morada      = new Morada();
                    string nomeCliente = string.Empty;
                    if (values[INDEX_NOME_CLIENTE] != _null)
                    {
                        nomeCliente = textInfo.ToTitleCase(values[INDEX_NOME_CLIENTE].ToLower());
                    }
                    if (values[INDEX_CLIENTE_RUA] != _null)
                    {
                        morada.Rua = values[INDEX_CLIENTE_RUA];
                    }
                    if (values[INDEX_CLIENTE_LOCALIDADE] != _null)
                    {
                        morada.Localidade = values[INDEX_CLIENTE_LOCALIDADE];
                    }
                    if (values[INDEX_CLIENTE_ZIPCODE] != _null)
                    {
                        morada.ZipCode = values[INDEX_CLIENTE_ZIPCODE];
                    }
                    string tipo = values[INDEX_CLIENTE_MORADA_TIPO];

                    switch (tipo)
                    {
                    case "Devoluções":
                        morada.TipoMorada = TipoMorada.Devoluções;
                        break;

                    default:
                        morada.TipoMorada = TipoMorada.Normal;
                        break;
                    }

                    People cliente = clientes.FirstOrDefault(x => x.Nome == nomeCliente);
                    if (cliente == null)
                    {
                        cliente = new People();
                        clientes.Add(cliente);
                        if (values[INDEX] != "#NULL#")
                        {
                            cliente.ID = int.Parse(values[INDEX]);
                        }
                        cliente.Nome    = nomeCliente;
                        cliente.Moradas = new List <Morada>();
                    }
                    cliente.Moradas.Add(morada);
                }
            }

            return(clientes);
        }