コード例 #1
0
        public IHttpActionResult Postbt_ot_status(Models.ot_statusModel estado)
        {
            string       notificacion_desc  = "";
            string       notificacion_texto = "";
            bt_ot_status bt_ot_status       = Models.ot_statusModel.ConvertToBD(estado);

            db.bt_ot_status.Add(bt_ot_status);
            db.SaveChanges();

            estado.tiempo_sk = bt_ot_status.tiempo_sk.ToString("yyyy-MM-dd");
            estado.hh_mm_ss  = bt_ot_status.hh_mm_ss;
            estado.timestamp = string.Concat(bt_ot_status.tiempo_sk.ToString("yyyy-MM-dd"), " ", bt_ot_status.hh_mm_ss);


            if (estado.estado_sk == 3 || estado.estado_sk == 2)
            {
                // actualizo el estado de cierre de la OT
                Data.bt_ord_trabajo ot = db.bt_ord_trabajo.Where(x => x.ot_id == estado.ot_id).FirstOrDefault();

                if (estado.estado_sk == 3)
                {
                    //FINALIZADA
                    ot.fh_cierre = DateTime.Today;
                    db.SaveChanges();

                    notificacion_desc  = string.Concat("Orden ", estado.ot_id.ToString(), " resuelta");
                    notificacion_texto = string.Concat("La orden ", estado.ot_id.ToString(), " ha sido resuelta, ante cualquier consulta no dude en informarnos");
                }
                else
                {
                    // EN CURSO
                    tecnico t = null;
                    int     tecnico_sk;
                    if (ot.tecnico_sk != null)
                    {
                        tecnico_sk = (int)ot.tecnico_sk;
                        t          = (from tec in db.tecnicos
                                      where tec.tecnico_sk == tecnico_sk
                                      select tec).FirstOrDefault();
                    }



                    notificacion_desc = string.Concat("Orden ", estado.ot_id.ToString(), " en curso");
                    if (t != null)
                    {
                        notificacion_texto = "Técnico asignado: " + t.tecnico_desc;// string.Concat("El reclamo ", estado.ot_id.ToString(), " esta en curso");
                    }
                }

                // Doy de alta la notificacion en la LK
                Data.lk_notificacion noti = new Data.lk_notificacion();
                noti.notificacion_desc  = notificacion_desc;
                noti.notificacion_texto = notificacion_texto;
                noti.notificacion_tipo  = "OT y OS";
                db.lk_notificacion.Add(noti);
                db.SaveChanges();

                // Busco los usuarios del cliente de la OT
                List <usuario> usuarios = _clienteService.findUsersByClient(ot.cliente_sk);

                // Armo una notificacion por cada Usuario
                foreach (usuario u in usuarios)
                {
                    Data.bt_notificaciones bt_not = new Data.bt_notificaciones();
                    bt_not.usuario_sk      = u.usuario_sk;
                    bt_not.cliente_sk      = u.cliente_sk;
                    bt_not.notificacion_sk = noti.notificacion_sk;
                    bt_not.tiempo_sk       = DateTime.Today;
                    bt_not.ot_id           = estado.ot_id;

                    db.bt_notificaciones.Add(bt_not);
                }
                db.SaveChanges();

                // Mando Notificacion Push
                Service.FirebaseService.notificacion_mensaje m = new Service.FirebaseService.notificacion_mensaje();
                m.cliente_sk = ot.cliente_sk;
                m.usuario_sk = 0;
                m.titulo     = noti.notificacion_desc;
                fb.EnviarAFCM(m);
            }



            return(CreatedAtRoute("DefaultApi", new { id = estado.ot_id }, estado));
        }
コード例 #2
0
        public Data.bt_ot_status buscarUltEstado(int ot_id)
        {
            bt_ot_status estado = db.bt_ot_status.Where(x => x.ot_id == ot_id).OrderByDescending(x => x.tiempo_sk).ThenByDescending(x => x.hh_mm_ss).FirstOrDefault();

            return(estado);
        }
コード例 #3
0
        public IHttpActionResult Postbt_ord_trabajo(Models.otModel orden)
        {
            bt_ord_trabajo bt_ord_trabajo = Models.otModel.ConvertToBD(orden);

            if (bt_ord_trabajo.ot_id == 0)
            {
                // Creo la la orden
                db.bt_ord_trabajo.Add(bt_ord_trabajo);

                db.SaveChanges();
                orden.fh_cierre   = ((DateTime)(bt_ord_trabajo.fh_cierre)).ToString("yyyy-mm-dd");;
                orden.fh_creacion = ((DateTime)(bt_ord_trabajo.fh_creacion)).ToString("yyyy-mm-dd");;
                orden.ot_id       = bt_ord_trabajo.ot_id;
                orden.estado_id   = 1;
                orden.estado_desc = _otService.buscarEstado(1).estado_desc;

                // Creo el estado 1 para la orden
                Models.ot_statusModel st = new Models.ot_statusModel();
                st.estado_sk   = 1;
                st.ot_id       = bt_ord_trabajo.ot_id;
                st.comentarios = "Nueva Orden";
                bt_ot_status bt_ot_status = Models.ot_statusModel.ConvertToBD(st);


                db.bt_ot_status.Add(bt_ot_status);
                db.SaveChanges();


                // Chequeo si es un reclamo y la cantidad por zona, y dependiendo eso genero las notificaciones
                if (orden.tipo_id != 1)
                {
                    Data.cliente           cli         = _clienteService.findClientBySK(orden.cliente_sk);
                    Data.vw_ot_porc_quejas porc_quejas = db.vw_ot_porc_quejas.Where(x => x.localidad_sk == cli.localidad_sk).FirstOrDefault();

                    if (porc_quejas != null)
                    {
                        if (porc_quejas.porc >= 20)
                        {
                            List <Data.cliente> clientes = _clienteService.findClientsByLocalidad(cli.localidad_sk);
                            List <Data.usuario> usuarios = _clienteService.findUsersByClients(clientes);
                            Data.lk_localidad   loc      = db.lk_localidad.Where(x => x.localidad_sk == cli.localidad_sk).FirstOrDefault();


                            // Busco si esta la Noti y sino la doy de alta la notificacion en la LK

                            Data.lk_notificacion noti = db.lk_notificacion.Where(x => x.notificacion_desc == String.Concat("Servicio con Inconvenientes - ", loc.localidad_desc)).FirstOrDefault();
                            if (noti == null)
                            {
                                Data.lk_notificacion noti_aux = new Data.lk_notificacion();
                                noti_aux.notificacion_desc  = String.Concat("Servicio con Inconvenientes - ", loc.localidad_desc);
                                noti_aux.notificacion_texto = "El servicio presenta momentaneamente inconvenientes, estamos solucionandolo para su tranquilidad. Sepa disculpar las molestias";
                                noti_aux.notificacion_tipo  = "Alerta";
                                db.lk_notificacion.Add(noti_aux);
                                db.SaveChanges();
                                noti = noti_aux;
                            }

                            // Armo una notificacion por cada Usuario
                            foreach (usuario u in usuarios)
                            {
                                Data.bt_notificaciones bt_not = db.bt_notificaciones.Where(x => x.usuario_sk == u.usuario_sk && x.notificacion_sk == noti.notificacion_sk && x.tiempo_sk == DateTime.Today).FirstOrDefault();

                                if (bt_not == null)
                                {
                                    Data.bt_notificaciones bt_not_aux = new Data.bt_notificaciones();
                                    bt_not_aux.usuario_sk      = u.usuario_sk;
                                    bt_not_aux.cliente_sk      = u.cliente_sk;
                                    bt_not_aux.notificacion_sk = noti.notificacion_sk;
                                    bt_not_aux.tiempo_sk       = DateTime.Today;

                                    db.bt_notificaciones.Add(bt_not_aux);
                                    db.SaveChanges();
                                    bt_not = bt_not_aux;

                                    // Mando Notificacion Push
                                    Service.FirebaseService.notificacion_mensaje m = new Service.FirebaseService.notificacion_mensaje();
                                    m.usuario_sk  = u.usuario_sk;
                                    m.cliente_sk  = 0;
                                    m.titulo      = noti.notificacion_desc;
                                    m.descripcion = "Estamos trabajando para solucionarlo, disculpe las molestias";
                                    fb.EnviarAFCM(m);
                                }
                            }
                        }
                    }
                }



                return(CreatedAtRoute("DefaultApi", new { id = bt_ord_trabajo.ot_id }, orden));
            }
            else
            {
                bt_ord_trabajo ord_trabajo = db.bt_ord_trabajo.Where(x => x.ot_id == bt_ord_trabajo.ot_id).FirstOrDefault();

                ord_trabajo.fh_creacion  = bt_ord_trabajo.fh_creacion;
                ord_trabajo.fh_cierre    = bt_ord_trabajo.fh_cierre;
                ord_trabajo.calificacion = bt_ord_trabajo.calificacion;
                ord_trabajo.tecnico_sk   = bt_ord_trabajo.tecnico_sk;
                ord_trabajo.tipo         = bt_ord_trabajo.tipo;
                ord_trabajo.descripcion  = bt_ord_trabajo.descripcion;

                db.SaveChanges();
                orden.fh_creacion = ((DateTime)(ord_trabajo.fh_creacion)).ToString("yyyy-mm-dd");;
                orden.fh_cierre   = ((DateTime)(ord_trabajo.fh_cierre)).ToString("yyyy-mm-dd");;
                orden.estado_id   = _otService.buscarUltEstado(orden.ot_id).estado_sk;
                orden.estado_desc = _otService.buscarEstado(orden.estado_id).estado_desc;

                return(CreatedAtRoute("DefaultApi", new { id = ord_trabajo.ot_id }, orden));
            }
        }