public bool publicaArquivo(Models.ServiceModel.ItemBuscaNome arquivo) { var endereco = Context.Request.UserHostAddress; DescricaoArquivo da = null; ItemBuscaNome ibn = null; ClienteD cd = null; try { //Verifica se a Descrição do arquivo está cadastrada if (db.DescricaoArquivo.Find(arquivo.DescricaoArquivo.md5Arquivo) == null) { da = new DescricaoArquivo(); da.md5Arquivo = arquivo.DescricaoArquivo.md5Arquivo; da.tamanho = arquivo.DescricaoArquivo.tamanho; db.DescricaoArquivo.Add(da); db.SaveChanges(); } else { da = db.DescricaoArquivo.Find(arquivo.DescricaoArquivo.md5Arquivo); } //Verifica se já existe um item de busca com o mesmo nome e a mesma descrição if (!db.ItemBuscaNome.Any(x => x.nome == arquivo.nome && x.md5Arquivo == da.md5Arquivo)) { ibn = new ItemBuscaNome(); ibn.DescricaoArquivo = da; ibn.nome = arquivo.nome; db.ItemBuscaNome.Add(ibn); } else { ibn = db.ItemBuscaNome.First(x => x.nome == arquivo.nome && x.md5Arquivo == da.md5Arquivo); } //Verifica se o cliente já está cadastrado if (db.ClienteD.Find(endereco) == null) { cd = new ClienteD(); cd.endereco = endereco; db.ClienteD.Add(cd); } else { cd = db.ClienteD.Find(endereco); } db.SaveChanges(); //Verifica se o cliente já possui o arquivo if (!db.ClienteD.Find(endereco).DescricaoArquivo.Contains(da)) { db.ClienteD.Find(endereco).DescricaoArquivo.Add(da); } db.SaveChanges(); } //Se não conseguir gravar no banco retorna false catch (Exception e) { return(false); } return(true); }