public HttpResponseMessage Edit(PosteEditAPI Poste) { /// Validando o Poste ICollection <ValidationResult> results; if (Poste.TryValidate(out results)) { Poste posteBD = UnitOfWork.PosteRepository.Get(p => p.IdPoste == Poste.IdPoste && p.DataExclusao == null, includeProperties: "Cidade,Fotos,OrdemDeServico").FirstOrDefault(); if (posteBD != null) { ConverterLatLonToUtm converter = new ConverterLatLonToUtm(posteBD.Cidade.Datum, posteBD.Cidade.NorteOuSul, posteBD.Cidade.Zona); UTM utmPoste = converter.Convert(Poste.Lat, Poste.Lon); //Atribuindo os novos valores da Edicao posteBD.X = utmPoste.X; posteBD.Y = utmPoste.Y; posteBD.Finalizado = Poste.Finalizado; posteBD.Altura = Poste.Altura; posteBD.TipoPoste = Poste.TipoPoste; posteBD.Esforco = Poste.Esforco != null ? Poste.Esforco : 0; posteBD.Descricao = Poste.Descricao != null?Poste.Descricao.ToUpper() : ""; posteBD.DataCadastro = ConvertDate.UnixTimestampToDateTime(Poste.DataAtualizacao); // Salvando a posição do Mobile no momento da Edição do poste UTM posicaoAtualizacao = converter.Convert(Poste.LatAtualizacao, Poste.LonAtualizacao); posteBD.XAtualizacao = posicaoAtualizacao.X; posteBD.YAtualizacao = posicaoAtualizacao.Y; UnitOfWork.PosteRepository.Update(posteBD); /// Setando DataDeExclusao em todas as fotos foreach (FotoPoste f in posteBD.Fotos) { f.DataExclusao = DateTime.Now; UnitOfWork.FotoPosteRepository.Update(f); } /// usuario Usuario User = UnitOfWork.UsuarioRepository.Get(u => u.IdUsuario == IdUsuario).FirstOrDefault(); // Verificando as alterações das fotos if (Poste.Fotos != null && Poste.Fotos.Count > 0) { foreach (FotoAPI foto in Poste.Fotos) { if (foto != null) { DateTime DataDiretorio = Convert.ToDateTime(foto.DataFoto); //ConvertDate.UnixTimestampToDateTime(foto.DataFoto); String Data = DataDiretorio.ToString("dd-MM-yyyy hh:mm:ss"); FotoPoste f = UnitOfWork.FotoPosteRepository.Get(fto => fto.IdPoste == posteBD.IdPoste && fto.NumeroFoto.Trim() == foto.NumeroFoto.Trim()).FirstOrDefault(); if (f != null) { f.DataExclusao = null; f.DataFoto = DataDiretorio; f.Path = string.Format(ConfigurationManager.AppSettings["NewPathFotos"], posteBD.Cidade.CidadeDiretorio, Data, User.UserName.ToUpper(), foto.NumeroFoto.Trim()); UnitOfWork.FotoPosteRepository.Update(f); } else { FotoPoste fAux = new FotoPoste { CodigoGeoBD = -1, IdPoste = posteBD.IdPoste, NumeroFoto = foto.NumeroFoto.Trim(), DataFoto = DataDiretorio, Path = string.Format(ConfigurationManager.AppSettings["NewPathFotos"], posteBD.Cidade.CidadeDiretorio, Data, User.UserName.ToUpper(), foto.NumeroFoto.Trim()) }; UnitOfWork.FotoPosteRepository.Insert(fAux); } } } } UnitOfWork.Save(); //Commit List <FotoAPI> FotosApi = new List <FotoAPI>(); foreach (FotoPoste foto in posteBD.Fotos.Where(f => f.DataExclusao == null)) { FotoAPI ft = new FotoAPI(); ft.NumeroFoto = foto.NumeroFoto; ft.DataFoto = foto.DataFoto.ToString("dd-MM-yyyy hh:mm:ss"); //ConvertDate.DateTimeToUnixTimestamp(foto.DataFoto); FotosApi.Add(ft); } ConverterUtmToLatLon converterToLatLong = new ConverterUtmToLatLon(posteBD.Cidade.Datum, posteBD.Cidade.NorteOuSul, posteBD.Cidade.Zona); return(Request.CreateResponse(HttpStatusCode.OK, new ResponseApi() { Status = Status.OK, Message = Resources.Messages.Save_OK, Results = new { IdPoste = posteBD.IdPoste, Posicao = converterToLatLong.Convert(posteBD.X, posteBD.Y), DataCadastro = posteBD.DataCadastro, DataExclusao = posteBD.DataExclusao, Finalizado = posteBD.Finalizado, CodigoGeo = posteBD.CodigoGeo, IdLogradouro = posteBD.IdLogradouro, IdCidade = posteBD.Cidade.IdCidade, IdOrdemDeServico = posteBD.IdOrdemDeServico, Fotos = FotosApi, Altura = posteBD.Altura, TipoPoste = posteBD.TipoPoste, Esforco = posteBD.Esforco, Descricao = posteBD.Descricao } })); } else { return(Request.CreateResponse(HttpStatusCode.OK, new ResponseApi() { Status = Status.NOK, Message = Resources.Messages.Poste_Not_Found })); } } else { string MessageValidate = string.Empty; foreach (var validationResult in results) { MessageValidate += validationResult.ErrorMessage + "-"; } return(Request.CreateResponse(HttpStatusCode.OK, new ResponseApi() { Status = Status.NOK, Message = MessageValidate.Remove(MessageValidate.Length - 1) })); } }