static void Main(string[] args)
        {
            CitaDAO dao = new CitaDAO();
            string rutaCola = @".\private$\CitaRecibida";
            if (MessageQueue.Exists(rutaCola) == true)
            {
                MessageQueue cola = new MessageQueue(rutaCola);
                Message[] msgs = cola.GetAllMessages();
                Cita _cita = new Cita();
                if (cola.GetAllMessages().Count() > 0)
                {
                    foreach (Message msg in cola.GetAllMessages())
                    {
                        msg.Formatter = new XmlMessageFormatter(new Type[] { typeof(Cita) });
                        _cita = (Cita)msg.Body;
                        if (dao.Obtener(_cita.IdCita) == null)
                        {
                            dao.Crear(_cita);
                        }
                        else
                        {
                            dao.Modificar(_cita);
                        }

                        cola.Receive();
                    }
                }
            }
        }
        public Cita CrearCita(Cita citaACrear)
        {
            Observacion obs = null;
            try
            {

                ICollection<Cita> _listaMedCita = dao.BuscarMedicosConCitas(citaACrear).ToList();
                if (_listaMedCita.Count() == 0)
                {
                    ICollection<Cita> _listaPacCita = dao.BuscarPacienteConCita(citaACrear).ToList();
                    if (_listaPacCita.Count() == 0)
                    {
                        Cita beansalida=null;

                        try
                        {
                            beansalida=dao.Crear(citaACrear);

                            PacienteService.PacientesServiceClient clientPaciente=new PacienteService.PacientesServiceClient();
                            Paciente beanPac=clientPaciente.consultarPaciente(citaACrear.IdPaciente);
                            NotificacionService.EmailNotificationProxyPortTypeClient e = new NotificacionService.EmailNotificationProxyPortTypeClient();
                            e.notifyViaEmailReserva("Reserva", beanPac.Nombres, beanPac.Correo, citaACrear.IdCita.ToString(), citaACrear.FecReserva, citaACrear.IdEspecialidad.ToString());

                        }
                        catch (Exception)
                        {
                        }
                        return beansalida;
                    }
                    else
                    {
                        obs=new Observacion();
                        obs.CodigoError=1;
                        obs.MensajeError = "Ya se cuenta con una reserva de cita en el horario seleccionado";
                        throw new Exception();

                    }
                }
                else
                {
                    obs=new Observacion();
                    obs.CodigoError = 2;
                    obs.MensajeError = "El doctor no cuenta con este horario disponible";
                    throw new Exception();

                }
            }
            catch (Exception e)
            {
                if (obs != null)
                {
                    throw new WebFaultException<Observacion>(obs, HttpStatusCode.InternalServerError);
                }
                else
                {
                    string rutacola = @".\private$\CitaRecibida";
                    if (!MessageQueue.Exists(rutacola))
                        MessageQueue.Create(rutacola);

                    MessageQueue cola = new MessageQueue(rutacola);
                    Message mensaje = new Message();
                    mensaje.Label = "Nueva Cita";
                    mensaje.Body = citaACrear;
                    cola.Send(mensaje);
                    citaACrear.IdCita = -1;
                    return citaACrear;
                }
            }
        }
 public Cita ModificarCita(Cita citaAModificar)
 {
     ICollection<Cita> _listaMedCita = dao.BuscarMedicosConCitas(citaAModificar).ToList();
     if (_listaMedCita.Count() == 0)
     {
         ICollection<Cita> _listaPacCita = dao.BuscarPacienteConCita(citaAModificar).ToList();
         if (_listaPacCita.Count() == 0)
         {
             return dao.Crear(citaAModificar);
         }
         else
         {
             throw new WebFaultException<Observacion>(
             new Observacion()
             {
                 CodigoError = 1,
                 MensajeError = "Ya se cuenta con una reserva de cita en el horario seleccionado"
             }, HttpStatusCode.InternalServerError);
         }
     }
     else
     {
         throw new WebFaultException<Observacion>(
             new Observacion()
             {
                 CodigoError = 2,
                 MensajeError = "El doctor no cuenta con este horario disponible"
             }, HttpStatusCode.InternalServerError);
     }
 }