Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
        }