public CitaEN CrearCita(CitaEN citaCrear)
        {
            CitaEN citaCreada = null;
            string codigoNroCita = GenerarCodigoCitaNuevo();
            citaCrear.NroCita = codigoNroCita;

            int anio = Convert.ToInt32(citaCrear.Fecha.Substring(6, 4));
            int mes = Convert.ToInt32(citaCrear.Fecha.Substring(3, 2));
            int dia = Convert.ToInt32(citaCrear.Fecha.Substring(0, 2));
            int hhInicio;
            int hhFinal; int mmFinal = 0; int ssFinal = 0;
            DateTime horaFinal;
            DateTime fechaCita = Convert.ToDateTime(citaCrear.Fecha);

            hhInicio = citaCrear.HoraInicio.Hour;

            ServicioEN servicioAsociado = null;
            try
            {
                //Obtener hora de termino calculada
                ServicioService proxy = new ServicioService();
                servicioAsociado = proxy.ObtenerServicio(citaCrear.Servicio.Codigo);
            }
            catch
            {
                servicioAsociado = new ServicioEN() { Codigo = citaCrear.Servicio.Codigo, TiempoEstimado = 3 };
            }

            hhFinal = hhInicio + servicioAsociado.TiempoEstimado;

            horaFinal = new DateTime(anio, mes, dia, hhInicio, mmFinal, ssFinal);
            citaCrear.HoraFin = horaFinal.AddHours(hhFinal);

            //Estado
            citaCrear.Estado = 1; //Pendiente

            if (fechaCita.Date < DateTime.Now.Date)
            {
                throw new FaultException<RepetidoException>(new RepetidoException()
                {
                    Codigo = 1,
                    Mensaje = "La fecha seleccionada de la cita es incorrecta."
                },
                new FaultReason("Validación de negocio"));
            }

            if (citaCrear.HoraInicio <= DateTime.Now.AddHours(1))
            {
                throw new FaultException<RepetidoException>(new RepetidoException()
                {
                    Codigo = 2,
                    Mensaje = "Las citas de servicios son registradas con 1 hora de anticipacion, por favor elija otro horario disponible."
                },
                new FaultReason("Validación de negocio"));
            }


            try
            {

                //validar si el horario ya no esta disponible
                bool bEstaDisponibleHorario = false;
                bEstaDisponibleHorario = ValidarFechaHoraCitaXTaller(citaCrear.Fecha,
                                                                      citaCrear.HoraInicio,
                                                                      citaCrear.HoraFin,
                                                                      citaCrear.Taller.Codigo, citaCrear.Usuario.Codigo);

                if (bEstaDisponibleHorario)
                {
                    throw new FaultException<RepetidoException>(new RepetidoException()
                    {
                        Codigo = 3,
                        Mensaje = "La fecha y hora seleccionada no esta disponible."
                    },
                    new FaultReason("Validación de negocio"));
                }

                string strConectado = ConfigurationManager.AppSettings["ModoDesconectado"];
                if (strConectado.Equals("0"))
                {
                    throw new Exception("Modo Desconectado -  Colas");
                }

                citaCreada = CitaDAO.Crear(citaCrear);
            }
            catch (Exception ex)
            {
                citaCreada = citaCrear;
                string rutacola = @".\private$\ColaCitas";
                if (!MessageQueue.Exists(rutacola))
                {
                    MessageQueue.Create(rutacola);
                }
                MessageQueue cola = new MessageQueue(rutacola);

                Message mensaje = new Message();
                mensaje.Label = "Cola Usuario : " + citaCrear.Usuario.Usuario;
                mensaje.Body = citaCrear;
                cola.Send(mensaje);
            }
            return citaCreada;
        }
Esempio n. 2
0
        public CitaEN CrearCita(CitaEN citaCrear)
        {
            CitaEN citaCreada    = null;
            string codigoNroCita = GenerarCodigoCitaNuevo();

            citaCrear.NroCita = codigoNroCita;

            int      anio = Convert.ToInt32(citaCrear.Fecha.Substring(6, 4));
            int      mes  = Convert.ToInt32(citaCrear.Fecha.Substring(3, 2));
            int      dia  = Convert.ToInt32(citaCrear.Fecha.Substring(0, 2));
            int      hhInicio;
            int      hhFinal; int mmFinal = 0; int ssFinal = 0;
            DateTime horaFinal;
            DateTime fechaCita = Convert.ToDateTime(citaCrear.Fecha);

            hhInicio = citaCrear.HoraInicio.Hour;

            ServicioEN servicioAsociado = null;

            try
            {
                //Obtener hora de termino calculada
                ServicioService proxy = new ServicioService();
                servicioAsociado = proxy.ObtenerServicio(citaCrear.Servicio.Codigo);
            }
            catch
            {
                servicioAsociado = new ServicioEN()
                {
                    Codigo = citaCrear.Servicio.Codigo, TiempoEstimado = 3
                };
            }

            hhFinal = hhInicio + servicioAsociado.TiempoEstimado;

            horaFinal         = new DateTime(anio, mes, dia, hhInicio, mmFinal, ssFinal);
            citaCrear.HoraFin = horaFinal.AddHours(hhFinal);

            //Estado
            citaCrear.Estado = 1; //Pendiente

            if (fechaCita.Date < DateTime.Now.Date)
            {
                throw new FaultException <RepetidoException>(new RepetidoException()
                {
                    Codigo  = 1,
                    Mensaje = "La fecha seleccionada de la cita es incorrecta."
                },
                                                             new FaultReason("Validación de negocio"));
            }

            if (citaCrear.HoraInicio <= DateTime.Now.AddHours(1))
            {
                throw new FaultException <RepetidoException>(new RepetidoException()
                {
                    Codigo  = 2,
                    Mensaje = "Las citas de servicios son registradas con 1 hora de anticipacion, por favor elija otro horario disponible."
                },
                                                             new FaultReason("Validación de negocio"));
            }


            try
            {
                //validar si el horario ya no esta disponible
                bool bEstaDisponibleHorario = false;
                bEstaDisponibleHorario = ValidarFechaHoraCitaXTaller(citaCrear.Fecha,
                                                                     citaCrear.HoraInicio,
                                                                     citaCrear.HoraFin,
                                                                     citaCrear.Taller.Codigo, citaCrear.Usuario.Codigo);

                if (bEstaDisponibleHorario)
                {
                    throw new FaultException <RepetidoException>(new RepetidoException()
                    {
                        Codigo  = 3,
                        Mensaje = "La fecha y hora seleccionada no esta disponible."
                    },
                                                                 new FaultReason("Validación de negocio"));
                }

                string strConectado = ConfigurationManager.AppSettings["ModoDesconectado"];
                if (strConectado.Equals("0"))
                {
                    throw new Exception("Modo Desconectado -  Colas");
                }

                citaCreada = CitaDAO.Crear(citaCrear);
            }
            catch (Exception ex)
            {
                citaCreada = citaCrear;
                string rutacola = @".\private$\ColaCitas";
                if (!MessageQueue.Exists(rutacola))
                {
                    MessageQueue.Create(rutacola);
                }
                MessageQueue cola = new MessageQueue(rutacola);

                Message mensaje = new Message();
                mensaje.Label = "Cola Usuario : " + citaCrear.Usuario.Usuario;
                mensaje.Body  = citaCrear;
                cola.Send(mensaje);
            }
            return(citaCreada);
        }