public List <Receita_real> Receita_real_refinada(List <Receita_real> lista) { List <Receita_real> real = new List <Receita_real>(); List <Medicamento_farmacia> list = new List <Medicamento_farmacia>(); List <Receita> list2 = new List <Receita>(); Receita_real entidade = null; foreach (var item in lista) { list.Add(item.medicamento); list2.Add(item.receita); entidade = new Receita_real { medicamento = Medicemento_farmacia_refinado(list).FirstOrDefault(), receita = Receita_refinada(list2).FirstOrDefault(), total = item.total }; real.Add(entidade); } return(real); }
public List <Pesquisas> Procura_farmacias(string local, string data, long id_usuario, float?raio) { if (raio == null) { raio = 5; } //TempData["pesquisa"] = (List<Medicamento_farmacia>)lista; //Inicializacao da magia de pesquisa; List <Sucursal_farmacia> farmacias = new List <Sucursal_farmacia>(); List <Receita> receitas = new List <Receita>(); List <Medicamento_farmacia> resultado = new List <Medicamento_farmacia>(); List <Medicamento_farmacia> resultado2 = new List <Medicamento_farmacia>(); List <Pesquisas> resumo = new List <Pesquisas>(); Pesquisas consulta = new Pesquisas(); Medicamento_farmacia med_farm = new Medicamento_farmacia(); Receita_real real = new Receita_real(); List <Reserva> reserva = new List <Reserva>(); Reserva reserva_melhor = new Reserva(); List <Medicamento_receita> lista2 = new List <Medicamento_receita>(); Medicamento_receita rm = new Medicamento_receita(); long contador = 1; decimal distancia2 = 0; //Fim da magia de pesquisa //Magia de pesquisa if (data != null) { Posicao_padrao posicao = Get_posicao(id_usuario); resultado = Farmacias_proximas((int)raio, id_usuario); if (resultado != null) { receitas = Minha_receita(id_usuario); foreach (var item in resultado) { int encontrado = 0; if (farmacias.Where(e => e.id_sucursal == item.id_farmacia).Count() == 0 && receitas.Where(a => a.id_medicamento == item.id_medicamento).Count() > 0) { Receita ras = receitas.Where(a => a.id_medicamento == item.id_medicamento).FirstOrDefault(); //total = (decimal)(ras.quantidade * item.preco); encontrado++; distancia2 = (decimal)(Math.Round(Calcula_distancia((float)item.Sucursal_farmacia.latitude, (float)item.Sucursal_farmacia.longitude, 'K', posicao), 1)); consulta = new Pesquisas { id = contador, id_fabricante = item.id_fabricante, referencia = item.referencia, id_farmacia = item.id_farmacia, raio = raio, ditancia_farmacia = distancia2, total_encontrado = encontrado, id_medicamento = ras.id_medicamento, data = ras.data, dosagem = ras.composicao, forma = ras.forma, id_registo = ras.id_registo, id_usuario = ras.id_usuario, preco_unitario = item.preco, quantidade = ras.quantidade, total_receita = receitas.Count(), total_valor = (decimal)(ras.quantidade * item.preco) }; contador++; resumo.Add(consulta); //farmacias.Add(item.Sucursal_farmacia); encontrado = 0; } } //Historico de pesquisas sobre os medicamentos da receita /* * foreach (var item in receitas) * { * try * { * reserva_melhor = reserva.Where(e => e.dosagem.Contains(item.composicao) && e.desc_quantidade.Contains(item.forma) && e.id_medicamento == item.id_medicamento).OrderBy(e => e.valor_actual).First(); * if (reserva_melhor != null) * { * // var distancia2 = Math.Round(Calcula_distancia((float)reserva_melhor.Medicamento_farmacia.Sucursal_farmacia.latitude, (float)reserva_melhor.Medicamento_farmacia.Sucursal_farmacia.longitude, 'K', posicao), 1); * med_farm = resultado2.Where(e => e.id_medicamento == item.id_medicamento && e.apresentacao.Equals(item.forma) && e.dosagem.Equals(item.composicao) && e.id_farmacia == reserva_melhor.id_farmacia && e.id_fabricante == reserva_melhor.id_fabricante && e.preco == reserva_melhor.valor_actual).FirstOrDefault(); * rm = new Medicamento_receita * { * consulta = med_farm, * distancia = (float)distancia2 * }; * lista2.Add(rm); * * } * * } * catch { } * } */ //Envio do resultado para a pagina de disponibilizaĆ§Ć£o do resultado } } //Fim da magia de pesquisa return(resumo); }