private static void AdicionarNotificacao(Usuario usuario, ObjetoSessao objetoSessao)
 {
     var notificacaoExistente = usuario.Notificacoes.FirstOrDefault(x => x.ObjetoSessao == objetoSessao);
     if (notificacaoExistente != null)
         notificacaoExistente.Quantidade++;
     else
         usuario.Notificacoes.Add(new Models.Entidades.Notificacao
         {
             Handle = 0,
             ObjetoSessao = objetoSessao,
             Quantidade = 1
         });
 }
        public ActionResult EscolherSessao(string SessaoColaborativaId)
        {
            var usuario = _repositorioUsuarios.Retornar(Convert.ToInt64(User.Identity.GetUserId()));

            if (string.IsNullOrEmpty(SessaoColaborativaId))
                return View();

            var sessao = _repositorioSessaoColaborativa.Retornar(long.Parse(SessaoColaborativaId));
            if (sessao == null) return View();

            var img = TempData["ThumbImageSavedURL"];
            TempData["ThumbImageSavedURL"] = null;
            var imgtn = TempData["ThumbImageTNSavedURL"];
            var url = TempData["UrlReferer"];
            if (img == null)
                return RedirectToAction("MostrarSessao", "Vimaps", new { id = SessaoColaborativaId });

            int ordem = 1;

            if (sessao.ObjetosDaSessao.Count > 0)
                ordem = sessao.ObjetosDaSessao.Max(x => x.Ordem) + 1;

            var objeto = new ObjetoSessao
            {
                UrlImagem = img.ToString(),
                UrlMiniatura = imgtn.ToString(),
                Ordem = ordem,
                UrlOrigem = url.ToString(),
                Usuario = usuario
            };

            sessao.ObjetosDaSessao.Add(objeto);
            sessao = _repositorioSessaoColaborativa.Salvar(sessao);

            // MOSTRANDO PRA ESCOLHER QUAL SESSÃO
            objeto = sessao.ObjetosDaSessao.FirstOrDefault(x => x.Ordem == ordem);
            if (sessao.ObjetosDaSessao.Count > 0)
                TempData["NovoObjeto"] = objeto.Handle;

            return RedirectToAction("MostrarSessao", "Vimaps", new { id = SessaoColaborativaId, objetoid = objeto.Handle });
        }
        public ActionResult SendImage(string imgdata, string url)
        {
            // Saving
            if (string.IsNullOrEmpty(imgdata))
                return RedirectToAction("MostrarSessao");

            var imagespath = Server.MapPath("~/UserData/Images");
            if (!Directory.Exists(imagespath))
                Directory.CreateDirectory(imagespath);

            var jpgEncoder = GetEncoder(ImageFormat.Png);
            var myEncoder = Encoder.Quality;
            var myEncoderParameters = new EncoderParameters(1);
            var myEncoderParameter = new EncoderParameter(myEncoder, 90L);
            myEncoderParameters.Param[0] = myEncoderParameter;

            var filename = DateTime.Now.ToString("yyyyMMddhhmmss") + "_" + Guid.NewGuid() + ".jpg";
            var filenametn = DateTime.Now.ToString("yyyyMMddhhmmss") + "_" + Guid.NewGuid() + "_tn.jpg";
            var str64 = imgdata.Split(',')[1];
            var bytes = Convert.FromBase64String(str64);

            Image image;
            using (var ms = new MemoryStream(bytes))
            {
                image = Image.FromStream(ms);
            }

            image.Save(imagespath + "/" + filename, jpgEncoder, myEncoderParameters);
            image.Save(imagespath + "/" + filenametn, jpgEncoder, myEncoderParameters);

            // VERIFICANDO SESSÃO ABERTA
            if (Session["lastSessionId"] != null && Session["lastObjectId"] != null)
            {
                long sessionid, objectid;

                if (long.TryParse(Session["lastSessionId"].ToString(), out sessionid) &&
                    long.TryParse(Session["lastObjectId"].ToString(), out objectid))
                {
                    var sessao = _repositorioSessaoColaborativa.Retornar(sessionid);

                    int ordem = 1;

                    if (sessao.ObjetosDaSessao.Count > 0)
                        ordem = sessao.ObjetosDaSessao.Max(x => x.Ordem) + 1;

                    var usuario = _repositorioUsuarios.Consultar(x => x.Handle.Equals(User.Identity.GetUserId<long>())).FirstOrDefault();

                    var objeto = new ObjetoSessao
                    {
                        UrlImagem = "/UserData/Images/" + filename,
                        UrlMiniatura = "/UserData/Images/" + filenametn,
                        Ordem = ordem,
                        UrlOrigem = url.ToString(),
                        Usuario = usuario
                    };

                    sessao.ObjetosDaSessao.Add(objeto);
                    sessao = _repositorioSessaoColaborativa.Salvar(sessao);

                    // COLOCANDO OBJETO DEPOIS DO OBJETO ATUAL
                    objeto = sessao.ObjetosDaSessao.FirstOrDefault(x => x.Ordem == ordem);
                    long ido = 0;
                    if (Session["lastObjectId"] != null && long.TryParse(Session["lastObjectId"].ToString(), out ido))
                        OrdenarObjeto(sessao.Handle, objeto.Handle, ido, objeto.Handle);

                    return RedirectToAction("MostrarSessao", "Vimaps", new { id = sessao.Handle, objetoid = objeto.Handle });
                }
            }

            TempData["ThumbImageSavedURL"] = "/UserData/Images/" + filename;
            TempData["ThumbImageTNSavedURL"] = "/UserData/Images/" + filenametn;
            TempData["UrlReferer"] = url;

            return RedirectToAction("MostrarSessao");

        }