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); }
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; }
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; }
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; }
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; }
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)); }
public static ResultadoTransaccion EliminarVisita(clsVisita visita) { return AccesoDatos.Calendarios.clsCalendarioADO.EliminarVisita(visita); }
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; }
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; }
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; }
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); } }
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; }
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); } }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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(); }
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; }