コード例 #1
0
        public EspecificacionUsuario AgregarUsuario(EspecificacionUsuario espus, String nomMov, String[] categs)
        {
            espus.BajasContenido = 0;
            Console.WriteLine("Creando Usuario... ");
            Console.WriteLine(espus.ToString());
            BackOffice bo = new BackOffice();

            //Modificado por matias. No se si estara bien.
            //espus.MovimientoId = bo.ObtenerMovimientoXNombre(nomMov).Id;
            try
            {
                return(espusdac.AddEspecificacionUsuario(espus, categs));
            }
            catch (Exception ex)
            {
                Notificaciones.enviarNotificacion("-1", "*****@*****.**", "*****@*****.**", "error", "Matias", "nada", ex.ToString(), "");
                Notificaciones.enviarNotificacion("-1", "*****@*****.**", "*****@*****.**", "error", "Matias", "nada", ex.ToString(), "");
                Console.WriteLine(ex.Message);
                throw;
            }
        }
コード例 #2
0
        public Convocatoria AgregarConvocatoria(Convocatoria conv)
        {
            Console.WriteLine("Agregando convocatoria... ");
            conv.CantUsuariosConfirmados = 0;
            conv.Suspendida = false;
            Convocatoria convocatoria = null;

            using (var ts = new TransactionScope(TransactionScopeOption.Required))
            {
                try
                {
                    convocatoria = cdac.AddConvocatoria(conv);
                    ts.Complete();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            Console.WriteLine("Se ha creado una nueva convocatoria de id = " + convocatoria.Id);

            Console.WriteLine("Enviando notificaciones de nueva convocatoria... ");
            //Envío de notificaciones
            //Una vez ingresada una convocatoria se deberán enviar notificaciones a todos los usuarios que
            //se encuentren en un radio de menos de 50 km de la zona de la actividad, o que se hayan
            //registrado para recibir notificaciones de dicha temática.


            //Obtengo todos los usuarios del movimiento.
            EspecificacionUsuarioDAC euDac = new EspecificacionUsuarioDAC();
            var usuarios = from u in euDac.GetAllEspecificacionUsuario()
                           where u.MovimientoId == conv.MovimientoId
                           select u;

            if (usuarios.Count() > 0)
            {
                BackOffice back    = new BackOffice();
                Movimiento movConv = back.ObtenerMovimientoXId(convocatoria.MovimientoId);
                //Para cada uno de los usuarios, chequeo si esta a 50 km o si esta enlazado a la categoria
                //tematica de la convocatoria
                double latConv    = convocatoria.UbicacionLatitud;
                double lonConv    = convocatoria.UbicacionLongitud;
                double sinLatConv = Math.Sin(latConv);
                double cosLatConv = Math.Cos(latConv);
                double latUsr;
                double lonUsr;
                double distancia;
                bool   enviarConfirmacion;
                foreach (var u in usuarios)
                {
                    enviarConfirmacion = false;
                    latUsr             = u.UbicacionLatitud;                                                                                                  // de grados a radianes
                    lonUsr             = u.UbicacionLongitud;                                                                                                 //
                    distancia          = (111.194) * (Math.Acos(sinLatConv * Math.Sin(latUsr) + cosLatConv * Math.Cos(latUsr) * Math.Cos(lonConv - lonUsr))); // En kilometros
                    Console.WriteLine("Distancia " + distancia);
                    if (Math.Abs(distancia) <= 50.0)
                    {
                        enviarConfirmacion = true;
                    }

                    if (!enviarConfirmacion)
                    {
                        foreach (CategoriaTematica cat in u.CategoriasTematicas)
                        {
                            if (cat.Id == convocatoria.CategoriaTematicaId)
                            {
                                enviarConfirmacion = true;
                            }
                        }
                    }

                    if (enviarConfirmacion)
                    {
                        try
                        {
                            Notificaciones.enviarNotificacion(movConv.Nombre, u.Membership, "no-reply-" + movConv.Nombre.ToLower() + "@indignadoframework.com",
                                                              "Nueva Convocatoria", u.Membership, "hay una nueva convocatoria en el movimiento " + movConv.Nombre + ".",
                                                              "Detalles de la convocatoria " + convocatoria.Titulo + ":" + "</br>" +
                                                              "Descripcion: " + convocatoria.Descripcion + "</br>" +
                                                              "Inicio: " + convocatoria.Inicio.ToString() + "</br>" +
                                                              "Ubicacion: " + "<a href=\"" + "http://indignado.cloudapp.net/" + movConv.Nombre + "/Convocatoria/Details?idConv=" + convocatoria.Id + "\">Ver Detalles" + "</a>" + "</br>" +
                                                              "Quorum: " + convocatoria.Quorum,
                                                              "http://www.mrvacandsewaz.com/images/map.png");
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine(ex.ToString());
                        }
                    }
                }
            }

            return(convocatoria);
        }