public ActionResult SalvarEdicaoOS(string NumOs, string DhFinal, string IdUsuario, SituacaoOrdemServico situacao, string Observacao) { OrdemDeServico OS_BD = UnitOfWork.OrdemDeServicoRepository.Get(os => os.NumeroOS == NumOs, includeProperties: "Usuario").FirstOrDefault(); string Resul = "OK"; string MsgErro = ""; #region Alterando Dados Ordem Serviço if (!DhFinal.Equals(string.Empty)) { DateTime dhEncerramento = Convert.ToDateTime(DhFinal); if (OS_BD.DataInicio <= dhEncerramento) { OS_BD.DataFinal = dhEncerramento; } else { Resul = "Erro"; } MsgErro = "Data de Encerramento é menor que a data de Criação."; } if (!string.IsNullOrEmpty(IdUsuario)) { OS_BD.IdUsuario = IdUsuario; } OS_BD.Situacao = situacao; OS_BD.Observacao = Observacao; #endregion UnitOfWork.OrdemDeServicoRepository.Update(OS_BD); UnitOfWork.Save(); OrdemServicoView Os_View = new OrdemServicoView() { NumeroOrdemServico = OS_BD.NumeroOS, Situacao = OS_BD.Situacao, Colaborador = OS_BD.Usuario != null?OS_BD.Usuario.UserName.ToUpper() : "SEM COLABORADOR" }; return(Json(new { OS_Return = Os_View, Msg = Resul, ErroMsg = MsgErro }, JsonRequestBehavior.AllowGet)); }
public ActionResult CriarOsPeloSite(string[] latlons, string[] PostesSelecionados, string[] StrandsSelecionados, int IdCidade, string NomeOrdem, string IdUsuario, SituacaoOrdemServico Situacao, string Observacao) { ConverterLatLonToUtm converter = null; var cidade = UnitOfWork.CidadeRepository.Get(id => id.IdCidade == IdCidade).FirstOrDefault(); if (cidade != null) { converter = new ConverterLatLonToUtm(cidade.Datum, cidade.NorteOuSul, cidade.Zona); } OrdemDeServico OrdemDeServico = new OrdemDeServico() { IdCidade = IdCidade, IdUsuario = IdUsuario, Observacao = Observacao, NumeroOS = NomeOrdem, Situacao = Situacao, DataInicio = DateTime.Now }; UnitOfWork.OrdemDeServicoRepository.Insert(OrdemDeServico); UnitOfWork.Save(); if (PostesSelecionados != null) { for (int i = 0; i < PostesSelecionados.Length; i++) { long idP = Convert.ToInt64(PostesSelecionados[i]); //Realoca Poste para nova OS var posteselect = UnitOfWork.PosteRepository.Get(id => id.IdPoste == idP).FirstOrDefault(); if (posteselect != null) { posteselect.IdOrdemDeServico = OrdemDeServico.IdOrdemDeServico; } //Realoca Poste para nova OS var demanda = UnitOfWork.PontoEntregaRepository.Get(id => id.IdPoste == idP).ToList(); foreach (var item in demanda) { item.IdOrdemDeServico = OrdemDeServico.IdOrdemDeServico; } //Realoca VaosDemandas para nova OS var vao = UnitOfWork.VaosDemandaPosteRepository.Get(id => id.IdPoste == idP).ToList(); foreach (var item in vao) { item.IdOrdemDeServico = OrdemDeServico.IdOrdemDeServico; } // (vao != null) //{ // vao.IdOrdemDeServico = OrdemDeServico.IdOrdemDeServico; //} } UnitOfWork.Save(); } if (StrandsSelecionados != null) { for (int i = 0; i < StrandsSelecionados.Length; i++) { long idS = Convert.ToInt64(StrandsSelecionados[i]); var strandSelect = UnitOfWork.DemandaStrandRepository.Get(id => id.ID == idS).FirstOrDefault(); if (strandSelect != null) { strandSelect.IdOrdemDeServico = OrdemDeServico.IdOrdemDeServico; } } UnitOfWork.Save(); } int ordem = -1; List <string> latlongs = new List <string>(); bool pode = false; double latInicio = 0, lonInicio = 0; double latPrimo = 0, lonPrimo = 0; List <double> lates = new List <double>(); for (int i = 0; i < latlons.Length; i++) { var x1y1 = latlons[i].Replace("(", "").Replace(")", "").Replace(" ", "").Split(','); for (int x = 0; x < x1y1.Length; x++) { double lastlons = Double.Parse(x1y1[x], System.Globalization.CultureInfo.InvariantCulture); // Console.WriteLine(lastlons.ToString(new System.Globalization.CultureInfo("en-US", true))); lates.Add(lastlons); } } int con = lates.Count(); int contadorFiel = con; int contador = 0; double latitude1 = 0, longitude1 = 0, latitude2 = 0, longitude2 = 0; for (int d = 0; d <= con; d++) { if (lonInicio == 0) { if (contador == 3) { longitude2 = lates[d]; contador++; pode = true; contador = 5; } if (contador == 2) { latitude2 = lates[d]; contador++; } if (contador == 1) { longitude1 = lates[d]; contador++; } if (contador == 0) { latitude1 = lates[d]; contador++; } } else { if (contadorFiel > d) { bool sovai = false; if (contador == 1) { longitude1 = lates[d]; contador++; pode = false; sovai = true; } if (contador == 0) { latitude1 = lates[d]; contador++; } if (sovai) { UTM lonIni = converter.Convert(latInicio, lonInicio); UTM latvem = converter.Convert(latitude1, longitude1); ordem++; PoligonoOS PoligonoOS = new PoligonoOS() { IdOrdemDeServico = OrdemDeServico.IdOrdemDeServico, Ordem = ordem, X1 = latInicio, Y1 = lonInicio, X2 = latvem.X, Y2 = latvem.Y, }; UnitOfWork.PoligonoOSRepository.Insert(PoligonoOS); UnitOfWork.Save(); latInicio = latvem.X; lonInicio = latvem.Y; contador = 0; } } else { ordem++; PoligonoOS PoligonoOS = new PoligonoOS() { IdOrdemDeServico = OrdemDeServico.IdOrdemDeServico, Ordem = ordem, X1 = latInicio, Y1 = lonInicio, X2 = latPrimo, Y2 = lonPrimo }; UnitOfWork.PoligonoOSRepository.Insert(PoligonoOS); UnitOfWork.Save(); } } if (pode) { UTM xy1 = converter.Convert(latitude1, longitude1); UTM xy2 = converter.Convert(latitude2, longitude2); if (latInicio == 0) { ordem++; PoligonoOS PoligonoOS = new PoligonoOS() { IdOrdemDeServico = OrdemDeServico.IdOrdemDeServico, Ordem = ordem, X1 = xy1.X, Y1 = xy1.Y, X2 = xy2.X, Y2 = xy2.Y, }; UnitOfWork.PoligonoOSRepository.Insert(PoligonoOS); UnitOfWork.Save(); } latInicio = xy2.X; lonInicio = xy2.Y; contador = 0; pode = false; if (lonPrimo == 0) { latPrimo = xy1.X; lonPrimo = xy1.Y; } } } OrdemDeServico OrdemBd = UnitOfWork.OrdemDeServicoRepository.Get(or => or.IdOrdemDeServico == OrdemDeServico.IdOrdemDeServico).FirstOrDefault(); //OrdemServicoView OrdemServicoView = new OrdemServicoView().GetOSByNum(OrdemBd); // return Json(new {Ordem = new OrdemServicoView().GetOSByNum(OrdemBd)}, JsonRequestBehavior.AllowGet); return(Json(new ResponseView() { Status = Status.OK, Result = Resources.Messages.Save_OK }, JsonRequestBehavior.AllowGet)); }