public ActionResult ChangeStatus(int Solicitud, int Status)
 {
     Updating update = new Updating() { Message = "Proceso de Actualización Exitosa." };
     using (var db = new Entities())
     {
         var solicitud = db.SS_SolicitudServicio.Find(Solicitud);
         solicitud.ST_Id = Status;
         db.Entry(solicitud).State = EntityState.Modified;
         db.SaveChanges();
         if (Status == 3)
         {
             SendEmailNotification(solicitud, true);
         }
     }
     return Json(update.SerializeToJson(), JsonRequestBehavior.AllowGet);
 }
        private void SendEmailNotification(SS_SolicitudServicio solicitud, bool isReview)
        {
            string pXml = string.Empty;
            var ppEmailTemplate = new Notification();
            var userName = WebSecurity.CurrentUserName;
            using (db = new Entities())
            {
                var soli = db.SS_SolicitudServicio.Where(c => c.SS_Id == solicitud.SS_Id);
                ppEmailTemplate.CustomerName = soli.FirstOrDefault().UserProfile.Name;
                ppEmailTemplate.ProviderName = soli.FirstOrDefault().AN_Anuncios.UserProfile.Name;
                ppEmailTemplate.SolicitudId = soli.FirstOrDefault().SS_Id;
                ppEmailTemplate.AnuncioId = soli.FirstOrDefault().AN_Anuncios.AN_Id;
                ppEmailTemplate.EmailCliente = soli.FirstOrDefault().UserProfile.UserName;
                ppEmailTemplate.EmailProveedor = soli.FirstOrDefault().AN_Anuncios.UserProfile.UserName;

                string urlimg = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/");
                var firstImage = "~/Images/logo2-blue.png";
                var formatted = firstImage.Replace("~", "");
                if (formatted.StartsWith("/"))
                    formatted = formatted.Remove(0, 1);
                firstImage = urlimg + formatted;

                ppEmailTemplate.Image = firstImage;

                string link = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/") + "Review/Create/" + solicitud.SS_Id;
                ppEmailTemplate.LinkReview = link;

                pXml = ppEmailTemplate.Serialize<Notification>();
                string serverPath = string.Empty;
                serverPath = base.Server.MapPath("~");
                string body = string.Empty;

                if (isReview)
                {
                    body = pXml.ConvertXML(Path.Combine(serverPath, @"EmailTemplates\ServicioReview.xslt"));
                    Extensions.ExtensionHelper.SendEmail(ppEmailTemplate.EmailCliente, "Informanos de como te fue en el servicio", body);

                    var soliupdate = db.SS_SolicitudServicio.Find(solicitud.SS_Id);
                    soliupdate.ST_Id = 4;
                    db.Entry(soliupdate).State = EntityState.Modified;
                    db.SaveChanges();

                }

                else
                {
                    body = pXml.ConvertXML(Path.Combine(serverPath, @"EmailTemplates\ServicioRequestClient.xslt"));
                    Extensions.ExtensionHelper.SendEmail(ppEmailTemplate.EmailCliente, "Solicitud de Servicio", body);

                    body = pXml.ConvertXML(Path.Combine(serverPath, @"EmailTemplates\ServicioRequestProved.xslt"));
                    Extensions.ExtensionHelper.SendEmail(ppEmailTemplate.EmailProveedor, "Solicitud de Servicio", body);
                }
            }
        }
 public ActionResult TakeService(FormCollection form)
 {
     if (form[0] != null)
     {
         int anuncioId = int.Parse(form[0]);
         using (var db = new Entities())
         {
             var solicitud = db.SS_SolicitudServicio.Add(new SS_SolicitudServicio
             {
                 AN_Id = anuncioId,
                 ST_Id = 1,
                 SS_Fecha = System.DateTime.Now,
                 UserId = WebSecurity.CurrentUserId
             });
             var solicitudcreada = db.SaveChanges<SS_SolicitudServicio>(solicitud);
             if (solicitudcreada != null)
             {
                 SendEmailNotification(solicitudcreada, false);
             }
         }
     }
     return null;
 }
        public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl)
        {
            string provider = null;
            string providerUserId = null;

            if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId))
            {
                return RedirectToAction("Manage");
            }

            if (ModelState.IsValid)
            {
                // Insert a new user into the database
                using (Entities db = new Entities())
                {
                    UserProfile user = db.UserProfile.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower());
                    // Check if user already exists
                    if (user == null)
                    {
                        // Insert name into the profile table

                        db.UserProfile.Add(new UserProfile { UserName = model.UserName, ST_Id = 1, MP_MemberShipId = 1, Name = model.UserName });
                        db.SaveChanges();

                        OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
                        OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false);

                        return RedirectToLocal(returnUrl, string.Empty);
                    }
                    else
                    {
                        ModelState.AddModelError("UserName", "Ya existe una cuenta con esta cuenta de correo. Por favor ingrese un correo diferente.");
                    }
                }
            }

            ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName;
            ViewBag.ReturnUrl = returnUrl;
            return View(model);
        }
        // Delete file from the server
        private void DeleteFile(HttpContext context)
        {
            if (context.Request["id"] != null)
            {
                using (var db = new Entities())
                {
                    var extra = db.AE_AnunciosExtras.Find(int.Parse(context.Request["id"].ToString()));
                    var currentPath = ExtraRoot + extra.AN_Id + @"\" + extra.AN_Nombre;
                    if (File.Exists(currentPath))
                    {
                        File.Delete(currentPath);
                    }
                    db.AE_AnunciosExtras.Remove(extra);
                    db.SaveChanges();

                }
            }
            else
            {
                var filePath = System.Web.HttpContext.Current.Server.MapPath(context.Request["f"]);
                if (File.Exists(filePath))
                {
                    File.Delete(filePath);
                }
            }
        }
        private void SaveContent(List<FilesStatus> files)
        {
            using (var tran = new TransactionScope())
            {
                using (var db = new Entities())
                {
                    files.ForEach(c =>
                    {
                        var anun = new AE_AnunciosExtras();
                        anun.AN_Id = int.Parse(HttpContext.Current.Session["Anuncio"].ToString());
                        anun.AN_ImagenUrl = c.UrlPath;
                        anun.AN_Nombre = Path.GetFileName(c.UrlPath);
                        var entity =db.SaveChanges<AE_AnunciosExtras>(anun);
                        c.IdResource = entity.AE_Id;
                    });

                }
                tran.Complete();
            }
        }