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; }
public void CrearCitaTest() { CitaEN citaCreada = null; VehiculoEN vehiculoAsignado = null; TallerEN tallerAsignado = null; UsuarioEN usuarioAsignado = null; ServicioEN servicioAsignado = null; GestionCitasWS.GestionCitasServiceClient _proxy = new GestionCitasWS.GestionCitasServiceClient(); tallerAsignado = new TallerEN() { Codigo = 2 }; vehiculoAsignado = new VehiculoEN() { Codigo = 1 }; usuarioAsignado = new UsuarioEN() { Codigo = 2 }; servicioAsignado = new ServicioEN() { Codigo = 1 }; var fecha = "10/02/2016"; int anio = Convert.ToInt32(fecha.Substring(6, 4)); int mes = Convert.ToInt32(fecha.Substring(3, 2)); int dia = Convert.ToInt32(fecha.Substring(0, 2)); int hh = 13; //8 - 9 - 14 - 15 - 16 int mm = 0; int ss = 0; CitaEN citaACrear = new CitaEN() { Fecha = fecha, HoraInicio = new DateTime(anio, mes,dia, hh,mm,ss), Observacion = "Pendiente de pago", Vehiculo = vehiculoAsignado, Taller = tallerAsignado, Servicio = servicioAsignado, Usuario = usuarioAsignado }; try { citaCreada = _proxy.CrearCita(citaACrear); Assert.AreNotEqual(null, citaCreada); } catch (FaultException<RepetidoException> fe) { if (fe.Detail.Codigo == 1) { Assert.AreEqual(1, fe.Detail.Codigo); Assert.AreEqual("La fecha seleccionada de la cita es incorrecta.", fe.Detail.Mensaje); Assert.AreEqual("Validación de negocio", fe.Reason.ToString()); } else if (fe.Detail.Codigo == 2) { Assert.AreEqual(2, fe.Detail.Codigo); Assert.AreEqual("Las citas de servicios son registradas con 1 hora de anticipacion, por favor elija otro horario disponible.", fe.Detail.Mensaje); Assert.AreEqual("Validación de negocio", fe.Reason.ToString()); } else if (fe.Detail.Codigo == 3) { Assert.AreEqual(3, fe.Detail.Codigo); Assert.AreEqual("La fecha y hora seleccionada no esta disponible.", fe.Detail.Mensaje); Assert.AreEqual("Validación de negocio", fe.Reason.ToString()); } } catch (Exception ex) { throw ex; } }