Ejemplo n.º 1
0
        public static ResultadoTransaccion GuardarVisita(clsVisita visita)
        {
            visita.FechaHoraTermino.AddSeconds(-1);

            if (visita.IsNew)
                return AccesoDatos.Calendarios.clsCalendarioADO.GuardarVisita(visita);
            else
                return AccesoDatos.Calendarios.clsCalendarioADO.ActualizarVisita(visita);
        }
Ejemplo n.º 2
0
        public string BodyAvisoVendedorVisitaOrganizada(clsVisita VisitaActual)
        {
            string EmailOrganizada = System.Configuration.ConfigurationSettings.AppSettings.Get("EmailVisitaOrganizada");

            string EmailBody = "";
            string asistentescraft = "";
            string asistentescliente = "";

            try
            {
                foreach (var asistente in VisitaActual.AsistentesCraft)
                {
                    asistentescraft += asistente.Usuario.NombreCompleto + "\n";
                }

                foreach (var asistente in VisitaActual.AsistentesCliente)
                {
                    asistentescliente += asistente.Contacto.NombreCompleto + "\n";
                }

                StringBuilder sb = new StringBuilder(EmailOrganizada);
                sb.Replace("[VENDEDOR]", VisitaActual.Vendedor.NombreCompleto);
                sb.Replace("[ORGANIZADOR]", VisitaActual.UsuarioOrganizador.NombreCompleto);
                if (VisitaActual.Cliente.NombreFantasia.Trim() != "")
                    sb.Replace("[CLIENTE]", VisitaActual.Cliente.NombreFantasia);
                else
                    sb.Replace("[CLIENTE]", VisitaActual.Cliente.NombreCompañia);
                sb.Replace("[ASUNTO]", VisitaActual.Asunto);
                sb.Replace("[UBICACION]", VisitaActual.Ubicacion);
                sb.Replace("[INICIO]", VisitaActual.FechaHoraComienzo.ToString());
                sb.Replace("[TERMINO]", VisitaActual.FechaHoraTermino.ToString());
                sb.Replace("[IMPORTANCIA]", VisitaActual.NivelImportancia.Nombre);
                sb.Replace("[DESCRIPCION]", VisitaActual.Descripcion);
                sb.Replace("[ASISTENTESCLIENTE]", asistentescliente);
                sb.Replace("[ASISTENTESCRAFT]", asistentescraft);
                sb.Replace("[SALTO]", "\n");

                EmailBody = sb.ToString();

            }
            catch (Exception ex) { }
            return EmailBody;
        }
Ejemplo n.º 3
0
        public static ResultadoTransaccion EliminarVisita(clsVisita visita)
        {
            SqlTransaction transaction = BaseDatos.Conexion().BeginTransaction();
            ResultadoTransaccion resSalida = new ResultadoTransaccion();

            try {
                foreach (var asistente in visita.Asistentes) {
                    resTransaccion = new ResultadoTransaccion();
                    resTransaccion = EliminarAsistente(asistente, transaction);
                    if (resTransaccion.Estado == Enums.EstadoTransaccion.Rechazada)
                        throw new Exception(resTransaccion.Descripcion);

                }

                resTransaccion = new ResultadoTransaccion();
                resTransaccion = EliminaVisita(visita, transaction);

                if (resTransaccion.Estado == Enums.EstadoTransaccion.Rechazada)
                    throw new Exception(resTransaccion.Descripcion);

                transaction.Commit();

                resSalida.Estado = Enums.EstadoTransaccion.Aceptada;

            } catch (Exception ex) {
                transaction.Rollback();
                resSalida.Estado = Enums.EstadoTransaccion.Rechazada;
                resSalida.Descripcion = ex.Message;
            } finally {
                BaseDatos.CerrarConexion();
            }

            return resSalida;
        }
Ejemplo n.º 4
0
        private static ResultadoTransaccion ModificarVisita(clsVisita visita, SqlTransaction transaction)
        {
            resTransaccion = new ResultadoTransaccion();
            try {
                objParams = SqlHelperParameterCache.GetSpParameterSet(BaseDatos.Conexion(), "SP_A_CALENDARIO_VISITA");
                objParams[0].Value = visita.Asunto;
                objParams[1].Value = visita.Ubicacion;
                objParams[2].Value = visita.FechaHoraComienzo;
                objParams[3].Value = visita.FechaHoraTermino;

                if (visita.Cliente == null)
                    objParams[4].Value = -1;
                else
                    objParams[4].Value = visita.Cliente.Id;

                if (visita.Vendedor == null)
                    objParams[5].Value = -1;
                else
                    objParams[5].Value = visita.Vendedor.Id;

                objParams[6].Value = visita.Descripcion;

                if (visita.NivelImportancia == null)
                    objParams[7].Value = -1;
                else
                    objParams[7].Value = visita.NivelImportancia.Id;

                objParams[8].Value = visita.EsRecurrente;
                objParams[9].Value = visita.EstadoBD;
                objParams[10].Value = visita.UsuarioOrganizador.Id;
                objParams[11].Value = visita.Id;
                objParams[12].Value = visita.DescripcionCancelacion;
                objParams[13].Value = visita.FechaCancelacion;
                objParams[14].Value = visita.EsReplanificada;
                objParams[15].Value = visita.FechaReplanificacion;
                objParams[16].Value = visita.FechaConfirmacion;
                objParams[17].Value = visita.EsReunionInterna;

                SqlCommand command = new SqlCommand("SP_A_CALENDARIO_VISITA", BaseDatos.Conexion());
                command.Transaction = transaction;
                command.Parameters.AddRange(objParams);
                command.CommandType = CommandType.StoredProcedure;
                command.ExecuteNonQuery();

                resTransaccion.Estado = Enums.EstadoTransaccion.Aceptada;

                //Registrar Actividad
                LogActividadUsuarios log = new LogActividadUsuarios(visita.GetType().ToString(), visita.Id, Enums.TipoActividadUsuario.Edito, Base.Usuario.UsuarioConectado.Usuario);
                LogActividades.clsLogActividadUsuariosADO.GuardaActividad(log);
            } catch (Exception ex) {
                resTransaccion.Estado = Enums.EstadoTransaccion.Rechazada;
                resTransaccion.Descripcion = ex.Message;
                Log.EscribirLog(ex.Message);
            }
            return resTransaccion;
        }
Ejemplo n.º 5
0
        public ResultadoTransaccion EnviarEmailVisitaPlanificacion(clsVisita VisitaActual, bool confirmada,
            bool aNombreDe)
        {
            ResultadoTransaccion resEmail = new ResultadoTransaccion();
            ResultadoTransaccion resLog = new ResultadoTransaccion();

            clsEmail email = new clsEmail();
            email.Asunto = VisitaActual.Asunto;
            email.Ubicacion = VisitaActual.Ubicacion;
            email.Cuerpo = VisitaActual.Descripcion;
            email.Emisor = ProyectoCraft.Base.Usuario.UsuarioConectado.Usuario.Email;
            email.Receptores = VisitaActual.EmailAsistentesCraft;
            email.FechaEmision = DateTime.Now;
            email.Visita = VisitaActual;

            if (!confirmada)
            {
                email.TipoEmail = Enums.VisitaTipoEmail.Planificacion;
            }
            else
            {
                email.TipoEmail = Enums.VisitaTipoEmail.ConfirmacionSinPlanificacion;
                VisitaActual.Descripcion += "\n" +
                                            "Esta visita ya ha sido confirmada por el Organizador. Debe aceptarla para agregarla a su calendario Outlook.";
            }

            //Enviar citacion a asistentes
            resEmail = CrearConvocatoriaReunion(VisitaActual, confirmada, aNombreDe, false);
            resLog = ProyectoCraft.LogicaNegocios.Calendarios.clsCalendarios.LogEmailVisita(email);

            return resEmail;
        }
Ejemplo n.º 6
0
        private void MapearAsistentesVisita(bool formload)
        {
            var timer = System.Diagnostics.Stopwatch.StartNew();
            AppointmentCollection appointments = schedulerStorage1.Appointments.Items;
            Int64 IdVisita = 0;

            if (formload) {
                foreach (var appointment in appointments) {
                    IdVisita = Convert.ToInt64(appointment.CustomFields["IdVisita"].ToString());

                    if (IdVisita > 0) {
                        clsVisita visita = new clsVisita(); // clsCalendarios.ObtenerVisitaPorId(IdVisita);

                        visita = ListaVisitas.Find(delegate(clsVisita var1) {
                            return var1.Id == IdVisita;
                        });

                        if (visita == null) break;
                        appointment.ResourceIds.Clear();
                        foreach (var asisCraft in visita.AsistentesCraft) {
                            appointment.ResourceIds.Add(asisCraft.Usuario.Id);
                        }
                        appointment.ResourceIds.Add(visita.UsuarioOrganizador.Id);
                    }
                }
            } else {
                Appointment appointment = appointments[appointments.Count - 1];
                IdVisita = Convert.ToInt64(appointment.CustomFields["IdVisita"].ToString());
                if (IdVisita > 0) {
                    clsVisita visita = clsCalendarios.ObtenerVisitaPorId(IdVisita);

                    appointment.ResourceIds.Clear();
                    foreach (var asisCraft in visita.AsistentesCraft) {
                        appointment.ResourceIds.Add(asisCraft.Usuario.Id);
                    }
                }
            }

            ClsLogPerformance.Save(new LogPerformance(Base.Usuario.UsuarioConectado.Usuario, timer.Elapsed.TotalSeconds));
        }
Ejemplo n.º 7
0
 public static ResultadoTransaccion EliminarVisita(clsVisita visita)
 {
     return AccesoDatos.Calendarios.clsCalendarioADO.EliminarVisita(visita);
 }
Ejemplo n.º 8
0
        public static clsVisita ObtenerVisitaPorId(Int64 IdVisita)
        {
            clsVisita visita = null;

            try {
                objParams = SqlHelperParameterCache.GetSpParameterSet(BaseDatos.Conexion(), "SP_C_CALENDARIO_VISITA_POR_ID");
                objParams[0].Value = IdVisita;

                DataSet ds = SqlHelper.ExecuteDataset(BaseDatos.Conexion(), CommandType.StoredProcedure, "SP_C_CALENDARIO_VISITA_POR_ID", objParams);

                if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) {
                    visita = new clsVisita();
                    visita.Id = Convert.ToInt64(ds.Tables[0].Rows[0]["Id"]);
                    visita.Asunto = ds.Tables[0].Rows[0]["Asunto"].ToString();
                    visita.Ubicacion = ds.Tables[0].Rows[0]["Ubicacion"].ToString();
                    if (ds.Tables[0].Rows[0]["IdCliente"] is DBNull)
                        visita.Cliente = null;
                    else
                        visita.Cliente = Clientes.clsClienteMasterADO.ObtenerClienteMasterPorId(Convert.ToInt64(ds.Tables[0].Rows[0]["IdCliente"]));

                    if (ds.Tables[0].Rows[0]["IdVendedor"] is DBNull)
                        visita.Vendedor = null;
                    else
                        visita.Vendedor = Usuarios.clsUsuarioADO.ObtenerUsuarioPorId(Convert.ToInt16(ds.Tables[0].Rows[0]["IdVendedor"]));

                    visita.FechaHoraComienzo = Convert.ToDateTime(ds.Tables[0].Rows[0]["FechaHoraComienzo"].ToString());
                    visita.FechaHoraTermino = Convert.ToDateTime(ds.Tables[0].Rows[0]["FechaHoraTermino"].ToString());
                    visita.Descripcion = ds.Tables[0].Rows[0]["Descripcion"].ToString();
                    visita.NivelImportancia = Parametros.clsParametrosDAO.BuscarParametroPorId(Convert.ToInt16(ds.Tables[0].Rows[0]["NivelImportancia"]));
                    visita.EstadoBD = (Enums.VisitaEstado)Convert.ToInt16(ds.Tables[0].Rows[0]["IdEstado"]);
                    visita.EstadoBDOld = (Enums.VisitaEstado)Convert.ToInt16(ds.Tables[0].Rows[0]["IdEstado"]);
                    if (ds.Tables[0].Rows[0]["DescripcionCancelacion"] is DBNull)
                        visita.DescripcionCancelacion = "";
                    else
                        visita.DescripcionCancelacion = ds.Tables[0].Rows[0]["DescripcionCancelacion"].ToString();

                    if (ds.Tables[0].Rows[0]["FechaCancelacion"] is DBNull)
                        visita.FechaCancelacion = DateTime.Now;
                    else
                        visita.FechaCancelacion = (DateTime)ds.Tables[0].Rows[0]["FechaCancelacion"];

                    if (ds.Tables[0].Rows[0]["EsReplanificada"] is DBNull)
                        visita.EsReplanificada = false;
                    else
                        visita.EsReplanificada = (bool)ds.Tables[0].Rows[0]["EsReplanificada"];

                    if (ds.Tables[0].Rows[0]["FechaReplanificacion"] is DBNull)
                        visita.FechaReplanificacion = new DateTime(9999, 1, 1, 0, 0, 0);
                    else
                        visita.FechaReplanificacion = (DateTime)ds.Tables[0].Rows[0]["FechaReplanificacion"];

                    if (ds.Tables[0].Rows[0]["IdUsuario"] is DBNull)
                        visita.UsuarioOrganizador = null;
                    else
                        visita.UsuarioOrganizador = Usuarios.clsUsuarioADO.ObtenerUsuarioPorId(Convert.ToInt16(ds.Tables[0].Rows[0]["IdUsuario"]));

                    if (ds.Tables[0].Rows[0]["FechaConfirmacion"] is DBNull)
                        visita.FechaConfirmacion = new DateTime(9999, 1, 1, 0, 0, 0);
                    else
                        visita.FechaConfirmacion = (DateTime)ds.Tables[0].Rows[0]["FechaConfirmacion"];

                    if (ds.Tables[0].Rows[0]["EsReunionInterna"] is DBNull)
                        visita.EsReunionInterna = false;
                    else
                        visita.EsReunionInterna = Convert.ToBoolean(ds.Tables[0].Rows[0]["EsReunionInterna"]);

                    visita.Asistentes = ObtenerAsistentesDeVisita(IdVisita);

                    resTransaccion = new ResultadoTransaccion();
                    resTransaccion = ObtenerInformeVisitaPor(-1, visita.Id);
                    if (resTransaccion.Estado == Enums.EstadoTransaccion.Aceptada)
                        visita.Informvisita = (clsVisitaInforme)resTransaccion.ObjetoTransaccion;

                }
            } catch (Exception ex) {
                Log.EscribirLog(ex.Message);
            } finally {
                BaseDatos.CerrarConexion();
            }

            return visita;
        }
Ejemplo n.º 9
0
        public static IList<clsVisita> ListarVisitasInforme(Int64 IdVendedor, Int64 IdCliente, DateTime fechadesde, DateTime fechahasta, Int64 estado)
        {
            SqlDataReader dreader = null;
            clsVisita visita = null;
            IList<clsVisita> listvisitas = new List<clsVisita>();
            try {
                objParams = SqlHelperParameterCache.GetSpParameterSet(BaseDatos.Conexion(), "SP_C_CALENDARIO_VISITAS_INFORME");
                objParams[0].Value = IdVendedor;
                objParams[1].Value = IdCliente;
                objParams[2].Value = fechadesde;
                objParams[3].Value = fechahasta;
                objParams[4].Value = estado;

                SqlCommand command = new SqlCommand("SP_C_CALENDARIO_VISITAS_INFORME", BaseDatos.Conexion());
                command.Parameters.AddRange(objParams);
                command.CommandType = CommandType.StoredProcedure;
                dreader = command.ExecuteReader();

                while (dreader.Read()) {
                    visita = new clsVisita();
                    visita.Id = Convert.ToInt64(dreader["IdVisita"]);
                    visita.Vendedor.Nombre = dreader["NombreVendedor"].ToString();
                    visita.Vendedor.ApellidoPaterno = dreader["PaternoVendedor"].ToString();
                    visita.Vendedor.ApellidoMaterno = dreader["MaternoVendedor"].ToString();

                    visita.Cliente.NombreCompañia = dreader["NombreCompania"].ToString();
                    visita.Cliente.NombreFantasia = dreader["NombreFantasia"].ToString();
                    visita.Cliente.ProductosPreferidos =
                        AccesoDatos.Clientes.clsClienteMasterADO.ObtenerProductosPreferidos(Convert.ToInt64(dreader["IdCliente"]));

                    if (visita.Cliente.NombreFantasia == "")
                        visita.Cliente.NombreFantasia = visita.Cliente.NombreCompañia;

                    visita.NivelImportancia =
                        Parametros.clsParametrosDAO.BuscarParametroPorId(Convert.ToInt16(dreader["NivelImportancia"]));
                    visita.FechaHoraComienzo = Convert.ToDateTime(dreader["FechaHoraComienzo"].ToString());
                    visita.FechaHoraTermino = Convert.ToDateTime(dreader["FechaHoraTermino"].ToString());
                    visita.EstadoBD = (Enums.VisitaEstado)Convert.ToInt16(dreader["IdEstado"]);
                    visita.EstadoVista = Convert.ToInt16(dreader["EstadoCalendario"]);
                    visita.EsReplanificada = Convert.ToBoolean(dreader["EsReplanificada"]);
                    visita.Asunto = dreader["Asunto"].ToString();
                    visita.Ubicacion = dreader["Ubicacion"].ToString();
                    visita.UsuarioOrganizador =
                        Usuarios.clsUsuarioADO.ObtenerUsuarioPorId(Convert.ToInt16(dreader["IdUsuario"]));

                    ResultadoTransaccion res = new ResultadoTransaccion();
                    res = ObtenerInformeVisitaPor(-1, Convert.ToInt64(dreader["IdVisita"]));
                    if (res.Estado == Enums.EstadoTransaccion.Aceptada)
                        visita.Informvisita = (clsVisitaInforme)res.ObjetoTransaccion;

                    //visita.Descripcion = dreader["Descripcion"].ToString();
                    //visita.NivelImportancia = Parametros.clsParametrosDAO.BuscarParametroPorId(Convert.ToInt16(dreader["NivelImportancia"]));
                    //visita.Asistentes = ObtenerAsistentesDeVisita(visita.Id);
                    listvisitas.Add(visita);
                }

            } catch (Exception ex) {
                Base.Log.Log.EscribirLog(ex.Message);
            } finally {
                BaseDatos.CerrarConexion();
            }

            return listvisitas;
        }
Ejemplo n.º 10
0
        public ResultadoTransaccion EnviarEmailVendedorRespondeComentarioEnInforme(clsVisita visita,
            clsInformeComentario comentario,
            bool EsVendedor, clsUsuario usuario)
        {
            string EmailAviso =
                System.Configuration.ConfigurationSettings.AppSettings.Get("EmailComentarioInformeVisita");
            string espectativas = "";
            string EmailBody = "";
            string productos = "";
            string traficos = "";
            string asistentescliente = "";
            string asistentescraft = "";
            ResultadoTransaccion res = new ResultadoTransaccion();
            try
            {
                foreach (var producto in visita.Informvisita.Productos)
                {
                    productos += producto.Producto.Nombre + " / ";
                }

                foreach (var trafico in visita.Informvisita.Traficos)
                {
                    traficos += trafico.Trafico.Nombre + " / ";
                }

                foreach (var asistente in visita.AsistentesCraft)
                {
                    if (asistente.Confirmo == Enums.VisitaEstadoAsistente.ConfirmoAsistencia)
                        asistentescraft += asistente.Usuario.NombreCompleto + "\n";
                }

                foreach (var asistente in visita.AsistentesCliente)
                {
                    asistentescliente += asistente.Contacto.NombreCompleto + "\n";
                }

                StringBuilder sb = new StringBuilder(EmailAviso);
                sb.Replace("[USUARIO]", usuario.NombreCompleto);
                sb.Replace("[USUARIOCOMENTADOR]", visita.Vendedor.NombreCompleto);
                if (visita.Cliente.NombreFantasia.Trim() != "")
                    sb.Replace("[CLIENTE]", visita.Cliente.NombreFantasia);
                else
                    sb.Replace("[CLIENTE]", visita.Cliente.NombreCompañia);

                sb.Replace("[COMENTARIO]", comentario.Comentario);

                sb.Replace("[ASUNTO]", visita.Asunto);
                sb.Replace("[UBICACION]", visita.Ubicacion);
                sb.Replace("[INICIO]", visita.FechaHoraComienzo.ToString());
                sb.Replace("[TERMINO]", visita.FechaHoraTermino.ToString());
                sb.Replace("[ASISTENTESCLIENTE]", asistentescliente);
                sb.Replace("[ASISTENTESCRAFT]", asistentescraft);
                sb.Replace("[PRODUCTOS]", productos);
                sb.Replace("[TRAFICOS]", traficos);
                if (visita.Informvisita.FollowUp.FechaFollowUp != null)
                    sb.Replace("[FOLLOWUP]", visita.Informvisita.FollowUp.FechaFollowUp.Value.ToShortDateString());

                if (visita.Informvisita.OtroTema)
                    sb.Replace("[OTROS]", "SI");
                else
                    sb.Replace("[OTROS]", "NO");

                if (visita.Informvisita.TieneEspectativaCierre)
                    espectativas = " SI (" + visita.Informvisita.EspectativaCierre + "%)";
                else
                    espectativas = " NO  ";

                sb.Replace("[ESPECTATIVAS]", espectativas);

                sb.Replace("[RESUMEN]", visita.Informvisita.ResumenVisita);
                sb.Replace("[SALTO]", "\n");

                EmailBody = sb.ToString();
                string asunto = "Comentario a Informe de Visita: " + visita.Cliente.NombreFantasia;

                if (!EsVendedor)
                {
                    EnviarEmail(visita.Vendedor.Email, asunto, EmailBody);
                }
                else
                {
                    EnviarEmail(usuario.Email, asunto, EmailBody);
                }

                LogEnviarEmail(Enums.VisitaTipoEmail.ComentarioAInformeVisita, visita, EmailBody, asunto);

                res.Estado = Enums.EstadoTransaccion.Aceptada;

            }
            catch (Exception ex)
            {
                Log.EscribirLog(ex.Message);
            }
            return res;
        }
Ejemplo n.º 11
0
        public void EnviarEmailInformeVisita(clsVisitaInforme informe, clsVisita VisitaActual)
        {
            string EmailBody = "";
            string productos = "";
            string traficos = "";
            string RecFijos = System.Configuration.ConfigurationSettings.AppSettings.Get("EmailInformeFijo");
            string RecLCL = System.Configuration.ConfigurationSettings.AppSettings.Get("EmailInformeLCL");
            string RecFCL = System.Configuration.ConfigurationSettings.AppSettings.Get("EmailInformeFCL");
            string RecAereo = System.Configuration.ConfigurationSettings.AppSettings.Get("EmailInformeAereo");
            string EmailInforme = System.Configuration.ConfigurationSettings.AppSettings.Get("EmailInformeVisita");
            string espectativas = "";

            try
            {
                foreach (var producto in informe.Productos)
                {
                    productos += producto.Producto.Nombre + " / ";
                }

                foreach (var trafico in informe.Traficos)
                {
                    traficos += trafico.Trafico.Nombre + " / ";
                }

                foreach (var asistente in VisitaActual.AsistentesCraft)
                {
                    if (asistente.Confirmo == Enums.VisitaEstadoAsistente.ConfirmoAsistencia)
                    {
                        StringBuilder sb = new StringBuilder(EmailInforme);
                        sb.Replace("[ASISTENTE]", asistente.Usuario.NombreCompleto);

                        if (VisitaActual.Cliente == null)
                        {
                            sb.Replace("[CLIENTE]", "");
                        }
                        else
                        {
                            if (VisitaActual.Cliente.NombreFantasia.Trim() != "")
                                sb.Replace("[CLIENTE]", VisitaActual.Cliente.NombreFantasia);
                            else
                                sb.Replace("[CLIENTE]", VisitaActual.Cliente.NombreCompañia);
                        }

                        sb.Replace("[PRODUCTOS]", productos);
                        sb.Replace("[TRAFICOS]", traficos);

                        if (informe.TieneEspectativaCierre)
                            espectativas = " SI (" + informe.EspectativaCierre + "%)";
                        else
                            espectativas = " NO  ";

                        sb.Replace("[ESPECTATIVAS]", espectativas);
                        if (informe.FollowUp.FechaFollowUp != null)
                            sb.Replace("[FOLLOWUP] ", informe.FollowUp.FechaFollowUp.Value.ToShortDateString());
                        sb.Replace("[RESUMEN]", informe.ResumenVisita);
                        sb.Replace("[SALTO]", "\n");

                        EmailBody = sb.ToString();
                        string asunto = "Informe Visita: " + VisitaActual.Asunto;

                        EnviarEmail(asistente.Usuario.Email, asunto, EmailBody);

                        LogEnviarEmail(Enums.VisitaTipoEmail.InformeVisitaConfirmados, VisitaActual, EmailBody, asunto);

                    }
                }

                //Enviar informe a Customers Services
                foreach (var producto in VisitaActual.Cliente.ProductosPreferidos)
                {
                    if (producto.Customer != null)
                    {
                        StringBuilder sb = new StringBuilder(EmailInforme);
                        sb.Replace("[ASISTENTE]", producto.Customer.NombreCompleto);

                        if (VisitaActual.Cliente == null)
                        {
                            sb.Replace("[CLIENTE]", "");
                        }
                        else
                        {
                            if (VisitaActual.Cliente.NombreFantasia.Trim() != "")
                                sb.Replace("[CLIENTE]", VisitaActual.Cliente.NombreFantasia);
                            else
                                sb.Replace("[CLIENTE]", VisitaActual.Cliente.NombreCompañia);
                        }

                        sb.Replace("[PRODUCTOS]", productos);
                        sb.Replace("[TRAFICOS]", traficos);

                        if (informe.TieneEspectativaCierre)
                            espectativas = " SI (" + informe.EspectativaCierre + "%)";
                        else
                            espectativas = " NO  ";

                        sb.Replace("[ESPECTATIVAS]", espectativas);
                        if (informe.FollowUp.FechaFollowUp != null)
                            sb.Replace("[FOLLOWUP] ", informe.FollowUp.FechaFollowUp.Value.ToShortDateString());
                        sb.Replace("[RESUMEN]", informe.ResumenVisita);
                        sb.Replace("[SALTO]", "\n");

                        EmailBody = sb.ToString();
                        string asunto = "Informe Visita: " + VisitaActual.Asunto;

                        EnviarEmail(producto.Customer.Email, asunto, EmailBody);
                        LogEnviarEmail(Enums.VisitaTipoEmail.InformeVisitaConfirmados, VisitaActual, EmailBody, asunto);

                    }
                }

                //Receptores Fijos
                string[] fijos = RecFijos.Split(';');
                string[] lcl = RecLCL.Split(';');
                string[] fcl = RecFCL.Split(';');
                string[] aereo = RecAereo.Split(';');

                foreach (var fijo in fijos)
                {
                    clsUsuario usuario = ProyectoCraft.LogicaNegocios.Usuarios.clsUsuarios.ObtenerUsuarioPorEmail(fijo);
                    if (usuario != null)
                    {
                        EnviarInformeReceptoresFijos(VisitaActual, usuario, productos, traficos,
                                                     Enums.VisitaTipoEmail.InformeVisitaFijos);
                    }
                }

                bool esLCL = false;
                bool esFCL = false;
                bool esAereo = false;

                foreach (var prod in VisitaActual.Informvisita.Productos)
                {
                    if (prod.Producto.EsLCL)
                        esLCL = true;
                    if (prod.Producto.EsFCL)
                        esFCL = true;
                    if (prod.Producto.EsAereo)
                        esAereo = true;
                }

                //busacr productos clientes

                IList<ProyectoCraft.Entidades.Clientes.clsClientesProductos> productoscliente = null;

                if (VisitaActual.Cliente == null)
                    productoscliente = new List<clsClientesProductos>();
                else
                    productoscliente =
                        ProyectoCraft.LogicaNegocios.Clientes.clsClientesMaster.ObtenerProductosPreferidos(
                            VisitaActual.Cliente.Id);

                foreach (var prod in productoscliente)
                {

                    if (!esLCL)
                        if (prod.Producto.EsLCL) esLCL = true;

                    if (!esFCL)
                        if (prod.Producto.EsFCL) esFCL = true;

                    if (!esAereo)
                        if (prod.Producto.EsAereo) esAereo = true;
                }

                if (esLCL)
                {
                    foreach (var fijo in lcl)
                    {
                        clsUsuario usuario =
                            ProyectoCraft.LogicaNegocios.Usuarios.clsUsuarios.ObtenerUsuarioPorEmail(fijo);
                        if (usuario != null)
                        {
                            EnviarInformeReceptoresFijos(VisitaActual, usuario, productos, traficos,
                                                         Enums.VisitaTipoEmail.InformeVisitaEncNegocio);
                        }
                    }
                }

                if (esFCL)
                {
                    foreach (var fijo in fcl)
                    {
                        clsUsuario usuario =
                            ProyectoCraft.LogicaNegocios.Usuarios.clsUsuarios.ObtenerUsuarioPorEmail(fijo);
                        if (usuario != null)
                        {
                            EnviarInformeReceptoresFijos(VisitaActual, usuario, productos, traficos,
                                                         Enums.VisitaTipoEmail.InformeVisitaEncNegocio);
                        }
                    }
                }

                if (esAereo)
                {
                    foreach (var fijo in aereo)
                    {
                        clsUsuario usuario =
                            ProyectoCraft.LogicaNegocios.Usuarios.clsUsuarios.ObtenerUsuarioPorEmail(fijo);
                        if (usuario != null)
                        {
                            EnviarInformeReceptoresFijos(VisitaActual, usuario, productos, traficos,
                                                         Enums.VisitaTipoEmail.InformeVisitaEncNegocio);
                        }
                    }
                }

                //Enviar Email a Customers
                foreach (var customer in productoscliente)
                {
                    if (customer.Customer != null)
                    {
                        EnviarInformeReceptoresFijos(VisitaActual, customer.Customer, productos, traficos,
                                                     Enums.VisitaTipoEmail.InformeVisitaCustomerService);
                    }
                }

            }
            catch (Exception ex)
            {
                Log.EscribirLog(ex.Message);
            }
        }
Ejemplo n.º 12
0
        public ResultadoTransaccion EnviarEmailComentarioRespondidoPorVendedor(clsVisita visita,
            clsInformeComentario comentario)
        {
            IList<clsInformeComentario> lista = new List<clsInformeComentario>();
            ResultadoTransaccion res = new ResultadoTransaccion();
            try
            {
                lista =
                    ProyectoCraft.LogicaNegocios.Calendarios.clsCalendarios.ListarComentariosVisita(
                        visita.Informvisita.Id);

                foreach (var comment in lista)
                {
                    if (comment.Usuario.Id != visita.Vendedor.Id)
                    {
                        EnviarEmailVendedorRespondeComentarioEnInforme(visita, comentario, true, comment.Usuario);
                    }
                }

                //Enviar comentario a customers
                foreach (var producto in visita.Cliente.ProductosPreferidos)
                {
                    if (producto.Customer != null)
                    {
                        EnviarEmailVendedorRespondeComentarioEnInforme(visita, comentario, false, producto.Customer);
                    }
                }

            }
            catch (Exception ex)
            {
                res.Descripcion = ex.Message;
                res.Estado = Enums.EstadoTransaccion.Rechazada;

            }

            return res;
        }
Ejemplo n.º 13
0
        private void EnviarInformeReceptoresFijos(clsVisita VisitaActual, clsUsuario usuario, string productos,
            string traficos, Enums.VisitaTipoEmail tipo)
        {
            string EmailInforme =
                System.Configuration.ConfigurationSettings.AppSettings.Get("EmailInformeVisitaRecFijos");
            string espectativas = "";
            string EmailBody = "";

            try
            {
                StringBuilder sb = new StringBuilder(EmailInforme);
                sb.Replace("[USUARIO]", usuario.NombreCompleto);

                if (VisitaActual.Vendedor == null)
                    sb.Replace("[VENDEDOR]", "");
                else
                    sb.Replace("[VENDEDOR]", VisitaActual.Vendedor.NombreCompleto);

                if (VisitaActual.Cliente == null)
                {
                    sb.Replace("[CLIENTE]", "");
                }
                else
                {
                    if (VisitaActual.Cliente.NombreFantasia.Trim() != "")
                        sb.Replace("[CLIENTE]", VisitaActual.Cliente.NombreFantasia);
                    else
                        sb.Replace("[CLIENTE]", VisitaActual.Cliente.NombreCompañia);
                }

                sb.Replace("[INICIO]", VisitaActual.FechaHoraComienzo.ToString());
                sb.Replace("[TERMINO]", VisitaActual.FechaHoraTermino.ToString());
                sb.Replace("[ASUNTO]", VisitaActual.Asunto);
                sb.Replace("[PRODUCTOS]", productos);
                sb.Replace("[TRAFICOS]", traficos);

                if (VisitaActual.Informvisita.TieneEspectativaCierre)
                    espectativas = " SI (" + VisitaActual.Informvisita.EspectativaCierre + "%)";
                else
                    espectativas = " NO  ";

                sb.Replace("[ESPECTATIVAS]", espectativas);
                if (VisitaActual.Informvisita.FollowUp.FechaFollowUp != null)
                    sb.Replace("[FOLLOWUP]", VisitaActual.Informvisita.FollowUp.FechaFollowUp.Value.ToShortDateString());
                sb.Replace("[RESUMEN]", VisitaActual.Informvisita.ResumenVisita);
                sb.Replace("[SALTO]", "\n");

                EmailBody = sb.ToString();
                string asunto = "Registro de Informe de Visita: " + VisitaActual.Asunto;

                EnviarEmail(usuario.Email, asunto, EmailBody);

                LogEnviarEmail(tipo, VisitaActual, EmailBody, asunto);

            }
            catch (Exception ex)
            {
                Log.EscribirLog(ex.Message);
            }
        }
Ejemplo n.º 14
0
        public ResultadoTransaccion ModificarVisitaOutlook(clsVisita VisitaActual, DateTime inicio, DateTime termino)
        {
            Application outlookApp = new Application();
            MAPIFolder calendar = outlookApp.Session.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
            Items calendarItems = calendar.Items;

            ResultadoTransaccion res = new ResultadoTransaccion();

            try
            {
                foreach (AppointmentItem item in calendarItems)
                {
                    if (item.UserProperties["IdVisitaSCC"] != null)
                    {
                        if (item.UserProperties["IdVisitaSCC"].Value.ToString() == VisitaActual.Id.ToString())
                        {
                            item.Start = VisitaActual.FechaHoraComienzo;
                            item.End = VisitaActual.FechaHoraTermino;

                            bool existe = false;
                            int count = 1;

                            //asistentes eliminados
                            foreach (Recipient asisEmail in item.Recipients)
                            {
                                existe = false;
                                foreach (var asisVisita in VisitaActual.AsistentesCraft)
                                {
                                    if (asisEmail.Address == asisVisita.Usuario.Email)
                                    {
                                        existe = true;
                                        break;
                                    }
                                }

                                if (existe == false)
                                    asisEmail.Delete();

                                count++;
                            }

                            //asistentes agregados
                            foreach (var asisVisita in VisitaActual.AsistentesCraft)
                            {
                                if (VisitaActual.UsuarioOrganizador.Id != asisVisita.Usuario.Id)
                                {
                                    existe = false;
                                    foreach (Recipient asisEmail in item.Recipients)
                                    {
                                        if (asisEmail.Address == asisVisita.Usuario.Email)
                                            existe = true;
                                    }

                                    if (!existe)
                                    {
                                        Recipient rec = item.Recipients.Add(asisVisita.Usuario.Email);
                                        rec.Type = (int)OlMeetingRecipientType.olRequired;
                                    }
                                }
                            }

                            ((_AppointmentItem)item).Send();

                            LogEnviarEmail(Enums.VisitaTipoEmail.Replanificacion, VisitaActual,
                                           ((_AppointmentItem)item).Body, VisitaActual.Asunto);

                            break;
                        }
                    }
                }
                res.Estado = Enums.EstadoTransaccion.Aceptada;

            }
            catch (Exception ex)
            {
                res.Estado = Enums.EstadoTransaccion.Rechazada;
                res.Descripcion = ex.Message;

                Log.EscribirLog(ex.Message);
            }
            return res;
        }
Ejemplo n.º 15
0
        public ResultadoTransaccion LogEnviarEmail(Enums.VisitaTipoEmail tipo, clsVisita Visita, string cuerpo,
            string asunto)
        {
            ResultadoTransaccion res = new ResultadoTransaccion();

            clsEmail email = new clsEmail();
            email.Asunto = Visita.Asunto;
            email.Ubicacion = Visita.Ubicacion;
            email.Cuerpo = cuerpo;
            email.Emisor = ProyectoCraft.Base.Usuario.UsuarioConectado.Usuario.Email;
            email.Receptores = Visita.EmailAsistentesCraft;
            email.FechaEmision = DateTime.Now;
            email.Visita = Visita;
            email.TipoEmail = tipo;

            res = ProyectoCraft.LogicaNegocios.Calendarios.clsCalendarios.LogEmailVisita(email);

            return res;
        }
Ejemplo n.º 16
0
        public static ResultadoTransaccion GuardarVisita(clsVisita visita)
        {
            SqlTransaction transaction = BaseDatos.Conexion().BeginTransaction();
            ResultadoTransaccion resSalida = new ResultadoTransaccion();

            try {
                resTransaccion = new ResultadoTransaccion();
                resTransaccion = AgregarVisita(visita, transaction);
                if (resTransaccion.Estado == Enums.EstadoTransaccion.Aceptada) {
                    Int64 idVisita = 0;
                    idVisita = (Int64)resTransaccion.ObjetoTransaccion;
                    visita.Id = idVisita;
                    foreach (clsVisitaAsistente asistente in visita.Asistentes) {
                        resTransaccion = new ResultadoTransaccion();
                        resTransaccion = AgregarAsistente(asistente, idVisita, transaction);
                        if (resTransaccion.Estado == Enums.EstadoTransaccion.Rechazada)
                            throw new Exception(resTransaccion.Descripcion);
                    }

                    transaction.Commit();

                    resSalida.Estado = Enums.EstadoTransaccion.Aceptada;
                } else {
                    throw new Exception(resTransaccion.Descripcion);
                }
            } catch (Exception ex) {
                transaction.Rollback();
                resSalida.Estado = Enums.EstadoTransaccion.Rechazada;
                resSalida.Descripcion = ex.Message;
            } finally {
                BaseDatos.CerrarConexion();
            }

            return resSalida;
        }
Ejemplo n.º 17
0
        public static IList<clsVisita> ListarVisitas(DateTime fechadesde, DateTime fechahasta, Int16 estado, Int64 idUsuario, Int16 idCategoria, Hashtable htUsuarios)
        {
            var timer = System.Diagnostics.Stopwatch.StartNew();
            SqlDataReader dreader = null;
            clsVisita visita = null;
            IList<clsVisita> listvisitas = new List<clsVisita>();
            try {
                objParams = SqlHelperParameterCache.GetSpParameterSet(BaseDatos.Conexion(), "SP_C_CALENDARIO_VISITAS");
                objParams[0].Value = fechadesde;
                objParams[1].Value = fechahasta;
                objParams[2].Value = estado;
                objParams[3].Value = idUsuario;
                objParams[4].Value = idCategoria;

                SqlCommand command = new SqlCommand("SP_C_CALENDARIO_VISITAS", BaseDatos.Conexion());
                command.Parameters.AddRange(objParams);
                command.CommandType = CommandType.StoredProcedure;
                dreader = command.ExecuteReader();

                while (dreader.Read()) {
                    visita = new clsVisita();
                    visita.Id = Convert.ToInt64(dreader["Id"]);
                    visita.Asunto = dreader["Asunto"].ToString();
                    visita.Ubicacion = dreader["Ubicacion"].ToString();
                    visita.FechaHoraComienzo = Convert.ToDateTime(dreader["FechaHoraComienzo"].ToString());
                    visita.FechaHoraTermino = Convert.ToDateTime(dreader["FechaHoraTermino"].ToString());
                    visita.Descripcion = dreader["Descripcion"].ToString();
                    visita.NivelImportancia = Parametros.clsParametrosDAO.BuscarParametroPorId(Convert.ToInt16(dreader["NivelImportancia"]));
                    visita.EstadoBD = (Enums.VisitaEstado)Convert.ToInt16(dreader["IdEstado"]);
                    visita.EstadoVista = Convert.ToInt16(dreader["EstadoCalendario"]); //(Enums.VisitaEstadoVista)
                    visita.Asistentes = ObtenerAsistentesDeVisita(visita.Id);
                    if (dreader["IdCliente"] is DBNull) {
                        visita.Cliente = null;
                    } else {
                        visita.IdCliente = Convert.ToInt64(dreader["idCliente"]);
                    }

                    if (dreader["IdCliente"] is DBNull)
                        visita.Cliente = null;
                    else
                        visita.Cliente = Clientes.clsClienteMasterADO.ObtenerClienteMasterPorId(
                                        Convert.ToInt64(dreader["IdCliente"]));

                    if (htUsuarios != null)
                        visita.UsuarioOrganizador = (clsUsuario)htUsuarios[dreader["IdUsuario"].ToString()];
                    else
                        visita.UsuarioOrganizador = Usuarios.clsUsuarioADO.ObtenerUsuarioPorId(Convert.ToInt16(dreader["IdUsuario"]));

                    listvisitas.Add(visita);
                }

            } catch (Exception ex) {
                Log.EscribirLog(ex.Message);
            } finally {
                BaseDatos.CerrarConexion();
            }
            ClsLogPerformanceADO.SaveFromADO(new LogPerformance(Base.Usuario.UsuarioConectado.Usuario, timer.Elapsed.TotalSeconds));
            return listvisitas;
        }
Ejemplo n.º 18
0
        public ResultadoTransaccion EnviarEmailVisitaCancelada(clsVisita VisitaActual)
        {
            Application outlookApp = new Application();
            MAPIFolder calendar = outlookApp.Session.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
            Items calendarItems = calendar.Items;
            ResultadoTransaccion res = new ResultadoTransaccion();
            try
            {
                foreach (AppointmentItem item in calendarItems)
                {

                    if (item.UserProperties["IdVisitaSCC"] != null)
                    {
                        if (item.UserProperties["IdVisitaSCC"].Value.ToString() == VisitaActual.Id.ToString())
                        {
                            item.MeetingStatus = OlMeetingStatus.olMeetingCanceled;
                            item.Body = VisitaActual.Descripcion;

                            VisitaActual.Asunto = "CANCELADA: " + item.Subject;

                            ((_AppointmentItem)item).Send();
                            ((_AppointmentItem)item).Delete();

                            LogEnviarEmail(Enums.VisitaTipoEmail.Cancelacion, VisitaActual, VisitaActual.Descripcion,
                                           VisitaActual.Asunto);

                            break;
                        }
                    }
                }

                res.Estado = Enums.EstadoTransaccion.Aceptada;
            }
            catch (Exception ex)
            {
                res.Estado = Enums.EstadoTransaccion.Rechazada;
                res.Descripcion = ex.Message;

                Log.EscribirLog(ex.Message);
            }
            return res;
        }
Ejemplo n.º 19
0
        public static IList<clsVisita> ListarVisitasTarget(DateTime fechadesde, DateTime fechahasta, Int16 estado, Int64 idUsuario)
        {
            SqlDataReader dreader = null;
            clsVisita visita = null;
            IList<clsVisita> listvisitas = new List<clsVisita>();
            try {
                objParams = SqlHelperParameterCache.GetSpParameterSet(BaseDatos.Conexion(), "SP_C_CALENDARIO_VISITAS_TARGET");
                objParams[0].Value = fechadesde;
                objParams[1].Value = fechahasta;
                objParams[2].Value = estado;
                objParams[3].Value = idUsuario;

                SqlCommand command = new SqlCommand("SP_C_CALENDARIO_VISITAS_TARGET", BaseDatos.Conexion());
                command.Parameters.AddRange(objParams);
                command.CommandType = CommandType.StoredProcedure;
                dreader = command.ExecuteReader();

                while (dreader.Read()) {
                    visita = new clsVisita();
                    visita.Id = Convert.ToInt64(dreader["Id"]);
                    visita.Asunto = dreader["Asunto"].ToString();
                    visita.Ubicacion = dreader["Ubicacion"].ToString();
                    visita.FechaHoraComienzo = Convert.ToDateTime(dreader["FechaHoraComienzo"].ToString());
                    visita.FechaHoraTermino = Convert.ToDateTime(dreader["FechaHoraTermino"].ToString());
                    visita.Descripcion = dreader["Descripcion"].ToString();
                    visita.NivelImportancia = Parametros.clsParametrosDAO.BuscarParametroPorId(Convert.ToInt16(dreader["NivelImportancia"]));
                    visita.EstadoBD = (Enums.VisitaEstado)Convert.ToInt16(dreader["IdEstado"]);
                    visita.EstadoVista = Convert.ToInt16(dreader["EstadoCalendario"]); //(Enums.VisitaEstadoVista)
                    visita.Asistentes = ObtenerAsistentesDeVisita(visita.Id);
                    listvisitas.Add(visita);
                }

            } catch (Exception ex) {
                Log.EscribirLog(ex.Message);
            } finally {
                BaseDatos.CerrarConexion();
            }

            return listvisitas;
        }
Ejemplo n.º 20
0
        public ResultadoTransaccion EnviarEmailVisitaConfirmada(clsVisita VisitaActual)
        {
            string EmailConfirmada = System.Configuration.ConfigurationSettings.AppSettings.Get("EmailVisitaConfirmada");

            string EmailBody = "";
            string asistentes = "";
            ResultadoTransaccion res = new ResultadoTransaccion();

            try
            {
                foreach (var asistente in VisitaActual.AsistentesCraft)
                {
                    if (asistente.Confirmo == Enums.VisitaEstadoAsistente.ConfirmoAsistencia)
                        asistentes += asistente.Usuario.NombreCompleto + "\n";
                }

                //Enviar confirmacion a asistentes confirmados
                foreach (var asistente in VisitaActual.AsistentesCraft)
                {
                    if (asistente.Usuario.Id != VisitaActual.Vendedor.Id)
                    {
                        if (asistente.Confirmo == Enums.VisitaEstadoAsistente.ConfirmoAsistencia)
                        {
                            StringBuilder sb = new StringBuilder(EmailConfirmada);
                            sb.Replace("[NOMBREASISTENTE]", asistente.Usuario.NombreCompleto);
                            sb.Replace("[NOMBREFANTASIA]", VisitaActual.Cliente.NombreCompañia);
                            sb.Replace("[ASUNTO]", VisitaActual.Asunto);
                            sb.Replace("[UBICACION]", VisitaActual.Ubicacion);
                            sb.Replace("[COMIENZO]", VisitaActual.FechaHoraComienzo.ToString());
                            sb.Replace("[TERMINO]", VisitaActual.FechaHoraTermino.ToString());
                            sb.Replace("[EJECUTIVO]", VisitaActual.Vendedor.NombreCompleto);
                            sb.Replace("[IMPORTANCIA]", VisitaActual.NivelImportancia.Nombre);
                            sb.Replace("[DESCRIPCION]", VisitaActual.Descripcion);
                            sb.Replace("[ASISTENTES]", asistentes);
                            sb.Replace("[SALTO]", "\n");

                            EmailBody = sb.ToString();

                            EnviarEmail(asistente.Usuario.Email, VisitaActual.Asunto, EmailBody);

                            LogEnviarEmail(Enums.VisitaTipoEmail.ConfirmacionAsistentesCraft, VisitaActual, EmailBody,
                                           VisitaActual.Asunto);
                        }

                    }
                }

                //Enviar email a customers
                foreach (var producto in VisitaActual.Cliente.ProductosPreferidos)
                {
                    if (producto.Customer != null)
                    {
                        StringBuilder sb = new StringBuilder(EmailConfirmada);
                        sb.Replace("[NOMBREASISTENTE]", producto.Customer.NombreCompleto);
                        sb.Replace("[NOMBREFANTASIA]", VisitaActual.Cliente.NombreCompañia);
                        sb.Replace("[ASUNTO]", VisitaActual.Asunto);
                        sb.Replace("[UBICACION]", VisitaActual.Ubicacion);
                        sb.Replace("[COMIENZO]", VisitaActual.FechaHoraComienzo.ToString());
                        sb.Replace("[TERMINO]", VisitaActual.FechaHoraTermino.ToString());
                        sb.Replace("[EJECUTIVO]", VisitaActual.Vendedor.NombreCompleto);
                        sb.Replace("[IMPORTANCIA]", VisitaActual.NivelImportancia.Nombre);
                        sb.Replace("[DESCRIPCION]", VisitaActual.Descripcion);
                        sb.Replace("[ASISTENTES]", asistentes);
                        sb.Replace("[SALTO]", "\n");

                        EmailBody = sb.ToString();

                        EnviarEmail(producto.Customer.Email, VisitaActual.Asunto, EmailBody);

                        LogEnviarEmail(Enums.VisitaTipoEmail.ConfirmacionAsistentesCraft, VisitaActual, EmailBody,
                                       VisitaActual.Asunto);
                    }
                }

                //a asistentes no confirmados cancelar la visita
                bool seelimino = false;
                Application outlookApp = new Application();
                MAPIFolder calendar = outlookApp.Session.GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
                Items calendarItems = calendar.Items;
                foreach (AppointmentItem item in calendarItems)
                {
                    if (item.UserProperties["IdVisitaSCC"] != null)
                    {
                        if (item.UserProperties["IdVisitaSCC"].Value.ToString() == VisitaActual.Id.ToString())
                        {
                            bool existe = false;
                            int count = 1;
                            //asistentes eliminados
                            foreach (Recipient asisEmail in item.Recipients)
                            {
                                existe = false;
                                foreach (var asisVisita in VisitaActual.AsistentesCraft)
                                {
                                    if (asisEmail.Address == asisVisita.Usuario.Email &&
                                        asisVisita.Confirmo == Enums.VisitaEstadoAsistente.ConfirmoAsistencia)
                                    {
                                        existe = true;
                                        break;
                                    }
                                }

                                if (existe == false)
                                {
                                    asisEmail.Delete();
                                    seelimino = true;
                                }

                                count++;
                            }

                            if (seelimino)
                                ((_AppointmentItem)item).Send();
                        }
                    }
                }

                res.Estado = Enums.EstadoTransaccion.Aceptada;
            }
            catch (Exception ex)
            {
                res.Estado = Enums.EstadoTransaccion.Rechazada;
                res.Descripcion = ex.Message;

                Log.EscribirLog(ex.Message);
            }

            return res;
        }
Ejemplo n.º 21
0
        public static ResultadoTransaccion ValidarUsuarioEnOtraVisita(clsVisita visita)
        {
            ResultadoTransaccion resSalida = new ResultadoTransaccion();

            foreach (var asistente in visita.Asistentes)
            {
                if(asistente.TipoAsistente == Entidades.Enums.Enums.VisitaTipoAsistente.Usuario && asistente.IsNew)
                {
                    ResultadoTransaccion resultado =
                        AccesoDatos.Calendarios.clsCalendarioADO.ValidarUsuarioEnOtraVisita(asistente.Usuario,
                                                                                            visita.FechaHoraComienzo.AddSeconds(1),
                                                                                            visita.FechaHoraTermino.AddSeconds(-1), visita.Id);
                    if(resultado.Estado == Entidades.Enums.Enums.EstadoTransaccion.Aceptada)
                    {
                        resSalida.Estado = Entidades.Enums.Enums.EstadoTransaccion.Aceptada;

                        clsVisita otraVisita = (clsVisita) resultado.ObjetoTransaccion;

                        if(otraVisita != null)
                        {
                            resSalida.Errores.Add(asistente.Usuario.NombreCompleto);
                            resSalida.Descripcion = "El asistente " + asistente.Usuario.NombreCompleto + " tiene otra visita programada en este horario ";
                            resSalida.ObjetoTransaccion = true;
                        }
                        else
                        {
                            resSalida.Errores = new List<string>();
                            resSalida.Descripcion = "";
                            resSalida.ObjetoTransaccion = true;
                        }

                        //if ((bool)resultado.ObjetoTransaccion)
                        //{
                        //    resSalida.Descripcion = "El asistente " + asistente.Usuario.NombreCompleto + " tiene otra visita programada en este horario ";
                        //    resSalida.ObjetoTransaccion = true;
                        //}
                        //else
                        //{
                        //    resSalida.Descripcion = "";
                        //    resSalida.ObjetoTransaccion = true;
                        //}Entidades.Usuarios.clsUsuario usuario, DateTime inicio, DateTime termino, Int64 IdVisita
                    }
                    else
                    {
                        resSalida = resultado;
                    }
                }
            }

            return resSalida;
        }
Ejemplo n.º 22
0
        public ResultadoTransaccion CrearConvocatoriaReunion(clsVisita visita, bool Confirmada, bool aNombreDe,
            bool AvisoVendedor)
        {
            Application outlookApp = new Application();
            AppointmentItem agendaMeeting = (AppointmentItem)outlookApp.CreateItem(OlItemType.olAppointmentItem);
            ResultadoTransaccion res = new ResultadoTransaccion();

            try
            {
                if (agendaMeeting != null)
                {
                    agendaMeeting.UserProperties.Add("IdVisitaSCC", OlUserPropertyType.olInteger, true,
                                                     OlFormatInteger.olFormatIntegerPlain);
                    agendaMeeting.UserProperties["IdVisitaSCC"].Value = visita.Id;
                    agendaMeeting.MeetingStatus = OlMeetingStatus.olMeeting;
                    agendaMeeting.Location = visita.Ubicacion;
                    agendaMeeting.Subject = visita.Asunto;
                    agendaMeeting.Body = visita.Descripcion;

                    agendaMeeting.Start = visita.FechaHoraComienzo;
                    agendaMeeting.End = visita.FechaHoraTermino;

                    TimeSpan diff;
                    diff = visita.FechaHoraTermino - visita.FechaHoraComienzo;

                    agendaMeeting.Duration = Convert.ToInt16(diff.TotalMinutes);

                    foreach (var asistente in visita.AsistentesCraft)
                    {
                        if (!aNombreDe)
                        {
                            if (visita.UsuarioOrganizador.Id != asistente.Usuario.Id)
                            {
                                Recipient rec = agendaMeeting.Recipients.Add(asistente.Usuario.Email);
                                rec.Type = (int)OlMeetingRecipientType.olRequired;
                            }
                        }
                        else
                        {
                            if (visita.EsReunionInterna)
                            {
                                if (visita.UsuarioOrganizador.Id != asistente.Usuario.Id)
                                {
                                    Recipient rec = agendaMeeting.Recipients.Add(asistente.Usuario.Email);
                                    rec.Type = (int)OlMeetingRecipientType.olRequired;
                                }
                            }
                            else
                            {
                                if (visita.UsuarioOrganizador.Id != asistente.Usuario.Id &&
                                    visita.Vendedor.Id != asistente.Usuario.Id)
                                {
                                    Recipient rec = agendaMeeting.Recipients.Add(asistente.Usuario.Email);
                                    rec.Type = (int)OlMeetingRecipientType.olRequired;
                                }

                                if (visita.Vendedor.Id == asistente.Usuario.Id)
                                    agendaMeeting.Body = BodyAvisoVendedorVisitaOrganizada(visita);
                            }
                        }
                    }

                    foreach (var producto in visita.Cliente.ProductosPreferidos)
                    {
                        if (producto.Customer != null)
                        {
                            Recipient rec = agendaMeeting.Recipients.Add(producto.Customer.Email);
                            rec.Type = (int)OlMeetingRecipientType.olRequired;
                        }
                    }
                    ((_AppointmentItem)agendaMeeting).Send();

                    res.Estado = Enums.EstadoTransaccion.Aceptada;

                }
            }
            catch (Exception ex)
            {
                res.Estado = Enums.EstadoTransaccion.Rechazada;
                res.Descripcion = ex.Message;

                Log.EscribirLog(ex.Message);
            }

            return res;
        }
Ejemplo n.º 23
0
        public static ResultadoTransaccion ActualizarVisita(clsVisita visita)
        {
            SqlTransaction transaction = BaseDatos.Conexion().BeginTransaction();
            ResultadoTransaccion resSalida = new ResultadoTransaccion();

            try {
                resTransaccion = new ResultadoTransaccion();
                resTransaccion = ModificarVisita(visita, transaction);
                if (resTransaccion.Estado == Enums.EstadoTransaccion.Aceptada) {
                    resTransaccion = new ResultadoTransaccion();
                    resTransaccion = EliminarAsistentesVisita(visita.Id, transaction);

                    if (resTransaccion.Estado == Enums.EstadoTransaccion.Rechazada)
                        throw new Exception(resTransaccion.Descripcion);

                    foreach (clsVisitaAsistente asistente in visita.Asistentes) {
                        resTransaccion = new ResultadoTransaccion();
                        asistente.IdVisita = visita.Id;
                        resTransaccion = AgregarAsistente(asistente, visita.Id, transaction);
                        if (resTransaccion.Estado == Enums.EstadoTransaccion.Rechazada)
                            throw new Exception(resTransaccion.Descripcion);
                    }

                    transaction.Commit();

                    resSalida.Estado = Enums.EstadoTransaccion.Aceptada;
                } else {
                    throw new Exception(resTransaccion.Descripcion);
                }
            } catch (Exception ex) {
                transaction.Rollback();
                resSalida.Estado = Enums.EstadoTransaccion.Rechazada;
                resSalida.Descripcion = ex.Message;
            } finally {
                BaseDatos.CerrarConexion();
            }

            return resSalida;
        }
Ejemplo n.º 24
0
        private static ResultadoTransaccion EliminaVisita(clsVisita visita, SqlTransaction transaction)
        {
            resTransaccion = new ResultadoTransaccion();
            try {
                objParams = SqlHelperParameterCache.GetSpParameterSet(BaseDatos.Conexion(), "SP_E_CALENDARIO_VISITA");
                objParams[0].Value = visita.Id;

                SqlCommand command = new SqlCommand("SP_E_CALENDARIO_VISITA", BaseDatos.Conexion());
                command.Transaction = transaction;
                command.Parameters.AddRange(objParams);
                command.CommandType = CommandType.StoredProcedure;
                command.ExecuteNonQuery();

                resTransaccion.Estado = Enums.EstadoTransaccion.Aceptada;

                //Registrar Actividad
                LogActividadUsuarios log = new LogActividadUsuarios(visita.GetType().ToString(), visita.Id, Enums.TipoActividadUsuario.Elimino, Base.Usuario.UsuarioConectado.Usuario);
                LogActividades.clsLogActividadUsuariosADO.GuardaActividad(log);

            } catch (Exception ex) {
                resTransaccion.Estado = Enums.EstadoTransaccion.Rechazada;
                resTransaccion.Descripcion = ex.Message;
                Log.EscribirLog(ex.Message);
            }
            return resTransaccion;
        }
Ejemplo n.º 25
0
        private void schedulerControl1_AppointmentDrop(object sender, AppointmentDragEventArgs e)
        {
            string createEventMsg = "Crear el evento a las {0} el dia {1}.";
            string moveEventMsg = "Mover el evento desde {0} el dia {1} a las {2} el dia {3}.";

            bool Crear = false;
            bool Mover = false;

            DateTime srcStart = e.SourceAppointment.Start;
            DateTime newStart = e.EditedAppointment.Start;

            string msg = (srcStart == DateTime.MinValue) ? String.Format(createEventMsg, newStart.ToShortTimeString(), newStart.ToShortDateString()) :
                String.Format(moveEventMsg, srcStart.ToShortTimeString(), srcStart.ToShortDateString(), newStart.ToShortTimeString(), newStart.ToShortDateString());

            if (msg.Contains("Crear"))
                Crear = true;

            if (msg.Contains("Mover"))
                Mover = true;

            clsVisita visita = new clsVisita();

            if (Mover) {
                if (!PermitirModificarVisita(e.SourceAppointment)) {
                    e.Allow = false;
                    e.Handled = true;
                    return;
                }
            }

            if (XtraMessageBox.Show(msg + "\r\nProceder?", "Mi Calendario", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) {
                e.Allow = false;
                e.Handled = true;
                return;
            }

            if (Convert.ToInt64(e.SourceAppointment.CustomFields["IdVisita"]) > 0) {
                if (Mover) {
                    visita =
                        LogicaNegocios.Calendarios.clsCalendarios.ObtenerVisitaPorId(
                            Convert.ToInt64(e.SourceAppointment.CustomFields["IdVisita"]));

                }

                //visita.Id = Convert.ToInt64(e.SourceAppointment.CustomFields["IdVisita"]);
                //visita.Asunto = e.SourceAppointment.Subject;
                //visita.Descripcion = e.SourceAppointment.Description;
                //visita.Ubicacion = e.SourceAppointment.Location;
                visita.FechaHoraComienzo = e.EditedAppointment.Start;
                visita.FechaHoraTermino = e.EditedAppointment.End;
            } else {
                visita.Id = Convert.ToInt64(e.SourceAppointment.CustomFields["IdVisita"]);
                visita.Asunto = e.SourceAppointment.Subject;
                visita.Descripcion = e.SourceAppointment.Description;
                visita.Ubicacion = e.SourceAppointment.Location;
                visita.FechaHoraComienzo = e.EditedAppointment.Start;
                visita.FechaHoraTermino = e.EditedAppointment.End;
            }

            if (Crear) {
                visita.Cliente = LogicaNegocios.Clientes.clsClientesMaster.ObtenerClienteMasterPorId(IdClienteDraw);
                visita.EstadoBD = Entidades.Enums.Enums.VisitaEstado.Incompleta;

                if (visita.Cliente.Tipo == Enums.TipoPersona.Cuenta) {
                    ResultadoTransaccion resCuenta = LogicaNegocios.Clientes.clsCuentas.ObtenerCuentaPorIdMaster(visita.Cliente.Id);
                    clsCuenta cuenta = new clsCuenta();
                    if (resCuenta.Estado == Enums.EstadoTransaccion.Aceptada)
                        cuenta = (clsCuenta)resCuenta.ObjetoTransaccion;

                    if (cuenta != null)
                        visita.Vendedor = cuenta.VendedorAsignado;
                } else if (visita.Cliente.Tipo == Enums.TipoPersona.Target) {
                    ResultadoTransaccion resCuenta =
                        LogicaNegocios.Clientes.clsTarget.ObtenerTargetPorIdMaster(visita.Cliente.Id);

                    clsTarget target = new clsTarget();
                    if (resCuenta.Estado == Enums.EstadoTransaccion.Aceptada)
                        target = (clsTarget)resCuenta.ObjetoTransaccion;

                    if (target != null)
                        visita.Vendedor = target.VendedorAsignado;
                }

                clsVisitaAsistente asistente = new clsVisitaAsistente();
                asistente.Usuario = Base.Usuario.UsuarioConectado.Usuario;
                asistente.TipoAsistente = Entidades.Enums.Enums.VisitaTipoAsistente.Usuario;
                visita.Asistentes.Add(asistente);

                clsParametrosInfo paraminfo = LogicaNegocios.Parametros.clsParametros.ListarParametrosPorTipo(Entidades.Enums.Enums.TipoParametro.ImportanciaVisita);
                visita.NivelImportancia = paraminfo.Items[0];  // Entidades.Enums.Enums.VisitaNivelImportancia.Baja;
            }

            //visita.Vendedor = Base.Usuario.UsuarioConectado.Usuario;

            visita.UsuarioOrganizador = Base.Usuario.UsuarioConectado.Usuario;
            Entidades.GlobalObject.ResultadoTransaccion res = LogicaNegocios.Calendarios.clsCalendarios.GuardarVisita(visita);

            if (res.Estado == Entidades.Enums.Enums.EstadoTransaccion.Aceptada) {

            } else {

                MessageBox.Show(res.Descripcion, "Calendario", MessageBoxButtons.OK, MessageBoxIcon.Error);
                e.Allow = false;
                e.Handled = true;
                return;
            }

            PopupClientes.Visible = false;

            //if(schedulerStorage1.Appointments.IsNewAppointment(e.EditedAppointment))
            //{
            //    schedulerStorage1.Appointments.Add(e.EditedAppointment);
            //}

            //SincronizarOutlook();
        }
Ejemplo n.º 26
0
        public ResultadoTransaccion EnviarEmailVisitaConfirmadaCliente(clsVisita VisitaActual)
        {
            string EmailConfirmada =
                System.Configuration.ConfigurationSettings.AppSettings.Get("EmailVisitaConfirmadaCliente");

            string EmailBody = "";
            string asistentes = "";
            ResultadoTransaccion res = new ResultadoTransaccion();

            try
            {
                foreach (var asistente in VisitaActual.AsistentesCraft)
                {
                    if (asistente.Confirmo == Enums.VisitaEstadoAsistente.ConfirmoAsistencia)
                        asistentes += asistente.Usuario.NombreCompleto + "\n";
                }

                //Enviar confirmacion a Cliente
                foreach (var asistente in VisitaActual.AsistentesCliente)
                {
                    StringBuilder sb = new StringBuilder(EmailConfirmada);

                    sb = sb.Replace("[NOMBRECOMPAÑIA]", VisitaActual.Cliente.NombreCompañia);
                    sb = sb.Replace("[NOMBREFANTASIA]", VisitaActual.Cliente.NombreFantasia);
                    sb = sb.Replace("[NOMBRECONTACTO]", asistente.Contacto.NombreCompleto);
                    sb = sb.Replace("[EJECUTIVO]", VisitaActual.Vendedor.NombreCompleto);
                    sb = sb.Replace("[ASUNTO]", VisitaActual.Asunto);
                    sb = sb.Replace("[UBICACION]", VisitaActual.Ubicacion);
                    sb = sb.Replace("[COMIENZO]", VisitaActual.FechaHoraComienzo.ToString());
                    sb = sb.Replace("[TERMINO]", VisitaActual.FechaHoraTermino.ToString());
                    sb = sb.Replace("[DESCRIPCION]", VisitaActual.Descripcion);
                    sb = sb.Replace("[ASISTENTES]", asistentes);
                    sb = sb.Replace("[SALTO]", "\n");

                    EmailBody = sb.ToString();

                    EnviarEmail(asistente.Contacto.Email, "Visita de CRAFT MULTIMODAL", EmailBody);

                    LogEnviarEmail(Enums.VisitaTipoEmail.ConfirmacionAsistentesCliente, VisitaActual, EmailBody,
                                   VisitaActual.Asunto);
                }

                res.Estado = Enums.EstadoTransaccion.Aceptada;
            }
            catch (Exception ex)
            {
                res.Estado = Enums.EstadoTransaccion.Rechazada;
                res.Descripcion = ex.Message;

                Log.EscribirLog(ex.Message);
            }

            return res;
        }