Example #1
0
        public async Task <ActionResult> changeStatutSignatures(decimal id, string val, int remuneration)
        {
            Postuler postuler = db.Postuler.FirstOrDefault(p => p.id == id);

            if (postuler == null)
            {
                return(HttpNotFound());
            }

            postuler.signatures      = val;
            postuler.remuneration    = remuneration;
            db.Entry(postuler).State = EntityState.Modified;

            var map = new Dictionary <String, String>();

            map.Add("@ViewBag.titre", postuler.Inscrire.login + " Nouvelle opportunité pour vous ");
            map.Add("@ViewBag.login", "");
            map.Add("@ViewBag.content", "Votre candidature au poste de " + postuler.Job.titre + " à été accepté vous êtes convié à signer votre contrat recus via le dashbaord  sur NioVarJobs");
            string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);
            MsMail mail = new MsMail();

            await mail.Send(postuler.Inscrire.email, "Candidature accepté", body);

            db.SaveChanges();
            return(RedirectToAction("listPostulantAdmin", new { id = postuler.Job_id }));
        }
Example #2
0
        public async Task <JsonResult> ForgotPassword()
        {
            String email = Request.Form["email"];

            if (String.IsNullOrEmpty(email))
            {
                return(Json(new { result_code = 0, message = "Datas not valid" }, JsonRequestBehavior.AllowGet));
            }
            Inscrire user = null;

            try
            {
                user = db.Inscrire.Single(x => x.email == email && x.archived == 1 && x.etat == 1);
                //Inscrire user = db.Inscrire.Where(x => x.email == email && x.archived == 1 && x.etat == 1).FirstOrDefault();
                if (user == null)
                {
                    return(Json(new { result_code = -1, message = "Account not found. Create an account !" }, JsonRequestBehavior.AllowGet));
                }
                MsMail mail = new MsMail();
                await mail.Send(user.email, "Forgot password ?", "Mr " + user.login + " Your password is " + user.password);

                return(Json(new { result_code = 1 }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(new { result_code = -2, message = "Account not found. Create an account !" }, JsonRequestBehavior.AllowGet));
            }
        }
        public async Task <ActionResult> confirmContratCandidat(decimal id)
        {
            Postuler postuler = db.Postuler.FirstOrDefault(p => p.id == id);

            if (postuler == null)
            {
                return(HttpNotFound());
            }

            postuler.signatures       = "2";
            postuler.situationTravail = "1";
            postuler.dateSignatures   = DateTime.Now;
            db.Entry(postuler).State  = EntityState.Modified;

            var map = new Dictionary <String, String>();

            map.Add("@ViewBag.titre", "Validation engagement de travail ");
            map.Add("@ViewBag.login", "");
            map.Add("@ViewBag.content", "Le candidat " + postuler.Inscrire.login + " à lus et confirmer la signature de son engagement de travail pour le poste de " + postuler.Job.titre + ".veuillez suivre la candidature de ce candidat sur NioVarJobs");
            string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);
            MsMail mail = new MsMail();

            await mail.Send(Constante.mailCompagny, "Contrat de travail signé et valider", body);

            db.SaveChanges();
            return(RedirectToAction("MesCandidatures"));
        }
Example #4
0
        public async Task <JsonResult> PreparePayment(decimal id)
        {
            if (_me == null)
            {
                return(Json(new { result_code = -1000, message = "Session expired" }, JsonRequestBehavior.AllowGet));
            }
            if (_me.type != "client")
            {
                return(Json(new { result_code = -10, message = "Not autorized for this action" }, JsonRequestBehavior.AllowGet));
            }
            Abonnement abonnement = db.Abonnement.Find(id);

            if (abonnement == null)
            {
                return(Json(new { result_code = -1, message = "Data not found" }, JsonRequestBehavior.AllowGet));
            }

            if (hasIllimitedAbonnement(lastAsbonnement) && lastAsbonnement.status == 1)
            {
                return(Json(new { result_code = -1, message = "You don't need abonnement." }, JsonRequestBehavior.AllowGet));
            }

            if (hasFreeAbonnement(lastAsbonnement))
            {
                Json(new { result_code = -1, message = "Your free abonnement is not complete." }, JsonRequestBehavior.AllowGet);
            }

            if (isFreeAbonnement(abonnement))

            {
                InsAbonne insAbonne = new InsAbonne();
                insAbonne.Abo_id    = abonnement.id;
                insAbonne.Ins_id    = _me.id;
                insAbonne.libelle   = "Abonnement " + abonnement.titre;
                insAbonne.status    = 1;
                insAbonne.archived  = 1;
                insAbonne.etat      = abonnement.nbrePost;
                insAbonne.created   = DateTime.Now;
                insAbonne.dateDebut = DateTime.Now.ToString();
                insAbonne.dateFin   = DateTime.Now.AddMonths(1).ToString();
                db.InsAbonne.Add(insAbonne);
                if (this.lastAsbonnement != null)
                {
                    lastAsbonnement.status          = 0;
                    db.Entry(lastAsbonnement).State = EntityState.Modified;
                }
                db.SaveChanges();

                //TODO retraviller le mail avec du HTML
                MsMail mail = new MsMail();
                await mail.Send(_me.email, "Abonnement " + abonnement.titre, "Votre abonnement a bien été pris en compte. Bénéficiez du meilleur de nos service.", null, null, null);

                return(Json(new { result_code = 1, data = getJson(insAbonne) }, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(Json(new { result_code = 2, abonnement = getJson(abonnement) }, JsonRequestBehavior.AllowGet));
            }
        }
        public async Task <JsonResult> Create([Bind(Include = "Ins_id,periode,heureTravail,montant,remuneration,dateDebut,dateFin")] Location location)
        {
            if (_me == null)
            {
                return(Json(new { result_code = -1000, message = "Session expired" }, JsonRequestBehavior.AllowGet));
            }
            if (_me.Equals("candidat"))
            {
                return(Json(new { result_code = -1, message = "Your are not allowed" }, JsonRequestBehavior.AllowGet));
            }


            Inscrire candidat = db.Inscrire.Where(p => p.id == location.Ins_id).First();

            if (candidat == null)
            {
                return(Json(new { result_code = -1, message = "Candidat not found" }, JsonRequestBehavior.AllowGet));
            }
            location.Ins_id2      = _me.id;
            location.signClient   = 0;
            location.signCandidat = 0;
            location.avisClient   = 0;
            location.avisCandidat = 0;
            location.status       = 1;
            location.etat         = 0;
            location.archived     = 1;
            location.created      = DateTime.Now;
            db.Location.Add(location);
            try
            {
                var map = new Dictionary <String, String>();
                map.Add("@ViewBag.titre", "Votre demande location a été effectué avec succès pour un salaire de : " + location.remuneration);
                map.Add("@ViewBag.login", _me.nom);
                map.Add("@ViewBag.content", "Votre demande est bien pris en compte et suivra la procédure adéquat. Merci bénéficiez du meilleur de nos service.");
                string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);

                var map1 = new Dictionary <String, String>();
                map1.Add("@ViewBag.titre", "Mr/Mme : " + candidat.login + "Vous êtes sollicité pour un travail pour une période de " + location.periode + "pour un salaire de "
                         + location.remuneration * 75 / 100);
                map1.Add("@ViewBag.login", candidat.login);
                map1.Add("@ViewBag.content", "Vous êtes conviez à bien a suivre votre dossier via votre espace compte sur https://niovar.solutions/Inscrires/Login. Merci bénéficiez du meilleur de nos service.");
                string body2 = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map1);
                MsMail mail  = new MsMail();
                MsMail mail2 = new MsMail();

                db.SaveChanges();

                //TODO retraviller le mail avec du HTML
                await mail.Send(_me.email, "NiovarJobs, demande location ", body);

                await mail2.Send(candidat.email, "NiovarJobs, Nouveau job disponible pour vous  ", body2);

                return(Json(new { result_code = 1, data = getJson(location) }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(new { result_code = -2, message = "An execption occured" }, JsonRequestBehavior.AllowGet));
            }
        }
Example #6
0
        public async Task <ActionResult> EditEtatCandidat(decimal id, decimal idJob, String status, int salFinal)
        {
            try
            {
                Postuler currentPostuler = db.Postuler.FirstOrDefault(p => p.id == id);
                if (currentPostuler == null)
                {
                    ViewBag.Message    = "Votre compte n'existe pas !";
                    TempData["myData"] = "0";
                    return(RedirectToAction("listPostulantAdmin", new { id = idJob }));
                }

                if (status.Equals("2"))
                {
                    currentPostuler.remuneration = salFinal;
                    Postuler currentEmployeur = db.Postuler.Where(p => p.Job_id == idJob && p.Inscrire.type.Equals("client") && p.archived == 1).FirstOrDefault();

                    var map = new Dictionary <String, String>();
                    map.Add("@ViewBag.titre", "Un candidat est intérésser par votre offre de " + currentEmployeur.Job.titre);
                    map.Add("@ViewBag.login", "");
                    map.Add("@ViewBag.content", "Vous avez reçus une  candidature pour le poste de :" + currentEmployeur.Job.titre + ".veuillez suivre la candidature de ce candidat sur NioVarJobs");
                    string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);
                    MsMail mail = new MsMail();

                    await mail.Send(currentEmployeur.Inscrire.email, "Candidat intérésser", body);
                }

                currentPostuler.etatCandidat = status;

                db.Entry(currentPostuler).State = EntityState.Modified;
                db.SaveChanges();

                TempData["myData"]  = "1";
                TempData["message"] = "Status modifié avec succès";

                return(RedirectToAction("listPostulantAdmin", new { id = idJob }));
            }
            catch (Exception)
            {
                TempData["myData"] = "0";
                return(RedirectToAction("listPostulantAdmin", new { id = idJob }));
            }
        }
        public async Task <ActionResult> Create([Bind(Include = "id,Rol_id,nom,email")] Utilisateur utilisateur)
        {
            if (ModelState.IsValid)
            {
                Utilisateur currentUser = db.Utilisateur.Where(x => x.email == utilisateur.email && x.archived == 1).FirstOrDefault();
                if (currentUser != null)
                {
                    String message = "cette adresse email est deja utilisé !";
                    return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
                }

                utilisateur.created  = DateTime.Now;
                utilisateur.archived = 1;
                utilisateur.status   = 0;
                utilisateur.password = generatePassword();
                db.Utilisateur.Add(utilisateur);

                try
                {
                    var map = new Dictionary <String, String>();
                    map.Add("@ViewBag.titre", "Création compte administrateur NiovarJobs ");
                    map.Add("@ViewBag.login", utilisateur.nom);
                    map.Add("@ViewBag.content", "Votre compte administrateur a été créer avec succès utilisé ces identifiant pour vous connecter email :" + utilisateur.email + "et mot de passe :" + utilisateur.password);
                    string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);
                    MsMail mail = new MsMail();

                    await mail.Send(utilisateur.email, "Identifiant de votre compte", body);

                    db.SaveChanges();
                    ViewBag.Message = "Compte administrateur crée avec succès";
                    return(RedirectToAction("Index"));
                }
                catch (Exception e)
                {
                    ViewBag.Rol_id = new SelectList(db.Role, "id", "libelle", utilisateur.Rol_id);
                    return(View(utilisateur));
                }
            }

            ViewBag.Rol_id = new SelectList(db.Role, "id", "libelle", utilisateur.Rol_id);
            return(View(utilisateur));
        }
Example #8
0
        public async Task <JsonResult> Create([Bind(Include = "login,email,password,cpassword,type")] Inscrire inscrire)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var emailExist = db.Inscrire.Where(x => x.email == inscrire.email).FirstOrDefault();

                    if (emailExist != null)
                    {
                        return(Json(new { result_code = -1, message = "This email already exist" }, JsonRequestBehavior.AllowGet));
                    }

                    inscrire.status   = 0;
                    inscrire.archived = 1;
                    inscrire.etat     = 0;
                    inscrire.created  = DateTime.Now;
                    db.Inscrire.Add(inscrire);

                    var url = MsMail.baseUrl + "Inscrires/Confirm?regId=" + inscrire.id;

                    var map = new Dictionary <String, String>();
                    map.Add("@ViewBag.ConfirmationLink", url);
                    map.Add("@ViewBag.login", inscrire.login);
                    string body = MsMail.BuldBodyTemplate("~/EmailTemplate/Text.cshtml", map);
                    MsMail mail = new MsMail();

                    db.SaveChanges();

                    await mail.Send(inscrire.email, "Email de vérification du compte", body);

                    return(Json(new { result_code = 1 }, JsonRequestBehavior.AllowGet));
                }
                catch (Exception)
                {
                    return(Json(new { result_code = -2, message = "An error occured" }, JsonRequestBehavior.AllowGet));
                }
            }

            return(Json(new { result_code = -2, message = "Datas not found" }, JsonRequestBehavior.AllowGet));
        }
Example #9
0
        public async Task <ActionResult> verifyEmailExist(Inscrire inscrire)
        {
            if (ModelState.IsValidField("email"))
            {
                Inscrire currentInscrire = db.Inscrire.Where(p => p.archived == 1 && p.email.Equals(inscrire.email)).FirstOrDefault();

                if (currentInscrire == null)
                {
                    ViewBag.Message = "Cette adresse email n'est utilisé par aucun compte ou n'existe pas ! ";
                    return(View(inscrire));
                }

                UtilisateursController utilisateurs = new UtilisateursController();

                currentInscrire.tokenPwdForget  = utilisateurs.generatePassword();
                db.Entry(currentInscrire).State = EntityState.Modified;


                var url = MsMail.baseUrl + "Home/changePwdForget?token=" + currentInscrire.tokenPwdForget;

                var map = new Dictionary <String, String>();
                map.Add("@ViewBag.ConfirmationLink", url);
                map.Add("@ViewBag.login", "");
                string body = MsMail.BuldBodyTemplate("~/EmailTemplate/Text.cshtml", map);
                MsMail mail = new MsMail();
                await mail.Send(currentInscrire.email, " confirmation rénitialisation  mot de passe oubliez ", body);

                db.SaveChanges();


                String message = " Un mail de confirmation vous a été envoyé à cette adresse " + currentInscrire.email + " veuillez valider ";
                return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
            }

            ModelState.AddModelError("email", "Veuillez saisir une adresse email valide");

            return(View(inscrire));
        }
        public async Task <JsonResult> SendMailJsonAsync()
        {
            int    totalFiles = Request.Form["totalFiles"].AsInt();
            String subject    = Request.Form["subject"];
            String message    = Request.Form["message"];

            String[] emails = Request.Form["to"].Split(',');
            if (emails.Length == 0)
            {
                return(Json(new { result_code = -1, message = "Recipients not found." }, JsonRequestBehavior.AllowGet));
            }

            List <String> To = new List <String>();

            for (int i = 0; i < emails.Length; i++)
            {
                To.Add(emails[i]);
            }

            List <String> Attachement = new List <String>();

            for (int i = 0; i < Request.Files.Count; i++)
            {
                HttpPostedFileBase file = Request.Files[i];
                var filename            = Path.GetFileName(file.FileName);
                var formattedFileName   = string.Format("{0}-{1}{2}"
                                                        , Path.GetFileNameWithoutExtension(filename)
                                                        , Guid.NewGuid().ToString("N")
                                                        , Path.GetExtension(filename));
                var path = Path.Combine(Server.MapPath("~/Assets/mails/"), formattedFileName);
                file.SaveAs(path);
                Attachement.Add(path);
            }
            MsMail mail = new MsMail();
            await mail.Send(To, subject, message, null, null, Attachement);

            return(Json(new { result_code = 1, msg = "Email envoyé avec succès" /*, totalFiles = totalFiles, subject = subject, message = message, emails = emails*/ }, JsonRequestBehavior.AllowGet));
        }
Example #11
0
        public async Task <JsonResult> ContactUsAsync()
        {
            //if (_me == null) return Json(new { result_code = -1000, message = "Session expired" }, JsonRequestBehavior.AllowGet);
            try
            {
                String email   = Request.Form["email"];
                String subject = Request.Form["subject"];
                String message = Request.Form["message"];
                if (String.IsNullOrEmpty(subject) && String.IsNullOrEmpty(message))
                {
                    return(Json(new { result_code = -1, message = "Datas not valid" }, JsonRequestBehavior.AllowGet));
                }
                //TODO faire parvenir le message du client a l'admin
                MsMail mail = new MsMail();
                await mail.Send(mail.getEmail(), email + " " + subject, message);

                return(Json(new { result_code = 1 }, JsonRequestBehavior.AllowGet));
            }
            catch (Exception e)
            {
                return(Json(new { result_code = -2, message = "An error occured" }, JsonRequestBehavior.AllowGet));
            }
        }
Example #12
0
        public async Task <ActionResult> Create(Location location)
        {
            decimal sessionId = (decimal)Session["id"];

            Location existLocation = db.Location.Where(p => p.Ins_id == location.Ins_id && p.Ins_id2 == sessionId && p.status == 1 && p.archived == 1).FirstOrDefault();

            if (existLocation != null)
            {
                String message = "Vous ne pouvez pas Louer un même  employé deux fois lorsque sa demande est encore en cour de traitement . Vérifier que vous avez supprimez ou désactivez cette demande et réessayez à nouveau.";
                return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
            }

            Inscrire candidat = db.Inscrire.Where(p => p.id == location.Ins_id).First();

            if (candidat == null)
            {
                return(HttpNotFound());
            }
            Inscrire client = db.Inscrire.Where(p => p.id == sessionId).First();

            if (client == null)
            {
                return(HttpNotFound());
            }

            if (ModelState.IsValid)
            {
                location.Ins_id2      = sessionId;
                location.signClient   = 0;
                location.signCandidat = 0;
                location.avisClient   = 0;
                location.avisCandidat = 0;
                location.status       = 1;
                location.etat         = 0;
                location.archived     = 1;
                location.created      = DateTime.Now;

                db.Location.Add(location);
            }



            try
            {
                var map = new Dictionary <String, String>();
                map.Add("@ViewBag.titre", "Votre demande location a été effectué avec succès pour un salaire de : " + location.remuneration);
                map.Add("@ViewBag.login", client.login);
                map.Add("@ViewBag.content", "Votre demande est bien pris en compte et suivra la procédure adéquat. Merci bénéficiez du meilleur de nos service.");
                string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);



                var map1 = new Dictionary <String, String>();
                map1.Add("@ViewBag.titre", "Mr/Mme :" + candidat.login + "Vous êtes sollicité pour un travail pour une période de " + location.periode + "pour un salaire de "
                         + Convert.ToDouble(location.remuneration) * (100 - pourcentage) / 100);
                map1.Add("@ViewBag.login", candidat.login);
                map1.Add("@ViewBag.content", "Vous êtes conviez à bien a suivre votre dossier via votre espace compte sur https://niovar.solutions/Inscrires/Login. Merci bénéficiez du meilleur de nos service.");
                string body2 = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map1);

                MsMail mail  = new MsMail();
                MsMail mail2 = new MsMail();

                db.SaveChanges();

                //TODO retraviller le mail avec du HTML
                await mail.Send(client.email, "NiovarJobs, demande location ", body);

                await mail2.Send(candidat.email, "NiovarJobs, Nouveau job disponible pour vous  ", body2);

                //TODO rediriger a la liste des candidatures
                return(RedirectToAction("mesDemandeLocation"));
            }
            catch (StripeException e)
            {
                return(RedirectToAction("cvCandidatLocation", new { id = location.Ins_id, page = 0 }));
            }
        }
Example #13
0
        public async Task <ActionResult> postulerDirectement(MailsModel mailsModel)
        {
            if (mailsModel.To == null)
            {
                String message = "Veuillez renseignez son l'email";
                return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
            }

            List <string> listFichier = new List <string>();

            if (Request.Files.Count > 0)
            {
                var file = Request.Files[0];
                if (file != null && file.ContentLength > 0)
                {
                    try
                    {
                        var filename = Path.GetFileName(file.FileName);

                        //verification de l'extention du fichiers
                        var supportedTypes = new[] { ".png", ".jpg", ".jpeg", ".gif", ".pdf", ".docx" };
                        var extention      = Path.GetExtension(filename);
                        if (!supportedTypes.Contains(extention))
                        {
                            String message = "L'extention du fichier n'est pas valide !";
                            return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
                        }
                        //end verification

                        var formattedFilename = string.Format("{0}-{1}{2}"
                                                              , Path.GetFileNameWithoutExtension(filename)
                                                              , Guid.NewGuid().ToString("N")
                                                              , Path.GetExtension(filename));
                        string path = Path.Combine(Server.MapPath("~/Fichier"),
                                                   Path.GetFileName(formattedFilename));
                        file.SaveAs(path);
                        listFichier.Add(path);
                    }
                    catch (Exception ex)
                    {
                        String message = "erreur de l'upload du fichier";
                        return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
                    }
                }
            }


            try
            {
                decimal  idPostulant = Convert.ToDecimal(Session["id"]);
                Postuler postuler    = new Postuler();
                postuler.Job_id           = mailsModel.idJob;
                postuler.Ins_id           = idPostulant;
                postuler.created          = DateTime.Now;
                postuler.archived         = 1;
                postuler.status           = 1;
                postuler.etat             = "0";
                postuler.etatAdmin        = "0";
                postuler.etatClient       = "0";
                postuler.etatCandidat     = "0";
                postuler.signatures       = "0";
                postuler.signatureClient  = 0;
                postuler.situationTravail = "0";
                db.Postuler.Add(postuler);

                var map = new Dictionary <String, String>();
                map.Add("@ViewBag.titre", "Nouvelle candidature");
                map.Add("@ViewBag.login", "");
                map.Add("@ViewBag.content", mailsModel.message);
                string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);
                MsMail mail = new MsMail();

                await mail.Send(mailsModel.To, mailsModel.subject, body, null, null, listFichier);

                db.SaveChanges();
                db.SaveChanges();

                String message = "candidature envoyé avec succès";
                return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
            }
            catch (Exception e)
            {
                String message = "echec veuillez reessayer";
                return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
            }
        }
Example #14
0
        public async Task <ActionResult> postuler(decimal id)
        {
            decimal idJob = id;

            if (Session.Count > 0 && Session["status"] != null)
            {
                if (Session["type"].Equals("client"))
                {
                    String message = "Vous ne pouvez pas postuler à cette offre. Seul les travailleurs intéressés ou ayant un compte candidat  peuvent postuler.";
                    return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
                }
                else
                {
                    decimal status = Convert.ToDecimal(Session["status"]);

                    if (status == 0)
                    {
                        String message = "Vous ne pouvez pas pour le moment postulé à une offre. Vérifier que vos informations sont bien renseignez dans votre profil et attendez l'activation de votre profil par les administrateurs NiovarJobs. Sinon contactez nous ";

                        return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
                    }

                    decimal idPostulant = Convert.ToDecimal(Session["id"]);

                    Postuler result = db.Postuler.Where(p => p.Ins_id == idPostulant && p.Job_id == idJob && p.Inscrire.type.Equals("candidat") && p.archived == 1).FirstOrDefault();

                    if (result != null)
                    {
                        String message = "Vous ne pouvez pas postuler a un même offre d'emploi deux fois ";
                        return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
                    }
                    else
                    {
                        Postuler currentEmployeur = db.Postuler.Where(p => p.Job_id == idJob && p.Inscrire.type.Equals("client") && p.archived == 1).FirstOrDefault();
                        if (currentEmployeur == null)
                        {
                            String message = "La  compagnie propriétaire de cette publication  n'existe pas ";
                            return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
                        }

                        Postuler postuler = new Postuler();
                        postuler.Job_id           = idJob;
                        postuler.Ins_id           = idPostulant;
                        postuler.created          = DateTime.Now;
                        postuler.archived         = 1;
                        postuler.status           = 1;
                        postuler.etat             = "0";
                        postuler.etatAdmin        = "0";
                        postuler.etatClient       = "0";
                        postuler.etatCandidat     = "0";
                        postuler.signatures       = "0";
                        postuler.signatureClient  = 0;
                        postuler.situationTravail = "0";


                        db.Postuler.Add(postuler);

                        TempData["myData"]  = "1";
                        TempData["message"] = "Votre candidature a été envoyer avec succès";

                        string emailTo = currentEmployeur.Inscrire.email;
                        if (currentEmployeur.Job.immediat.Equals("true"))
                        {
                            emailTo = Constante.mailCompagny;
                        }


                        var map = new Dictionary <String, String>();
                        map.Add("@ViewBag.titre", "Un candidat est intérésser par votre offre de " + currentEmployeur.Job.titre);
                        map.Add("@ViewBag.login", "");
                        map.Add("@ViewBag.content", "Le candidat " + Session["login"] + " à deposer sa candidature pour le poste de :" + currentEmployeur.Job.titre + ".veuillez suivre la candidature de ce candidat sur NioVarJobs");
                        string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);
                        MsMail mail = new MsMail();

                        await mail.Send(emailTo, "Candidat intérésser", body);

                        db.SaveChanges();
                    }


                    return(RedirectToAction("MesCandidatures", "Offre"));
                }
            }
            else
            {
                return(RedirectToAction("Login", "Inscrires"));
            }
        }
Example #15
0
        public async Task <ActionResult> PayAbonnement(String stripeToken, Decimal id)
        {
            if (_me == null)
            {
                return(Json(new { result_code = -1000, message = "Session expired" }, JsonRequestBehavior.AllowGet));
            }
            if (_me.type != "client")
            {
                return(Json(new { result_code = -10, message = "Not autorized for this action" }, JsonRequestBehavior.AllowGet));
            }
            Abonnement abonnement = db.Abonnement.Find(id);

            if (abonnement == null || String.IsNullOrEmpty(stripeToken))
            {
                return(Json(new { result_code = -1, message = "Data not found" }, JsonRequestBehavior.AllowGet));
            }
            StripeConfiguration.SetApiKey(STRIPE_API_KEY);


            double amount = abonnement.montant.Value * 100;

            if (amount <= 0)
            {
                return(Json(new { result_code = -1, message = "Amount not valid" }, JsonRequestBehavior.AllowGet));
            }
            var stripeOptions = new ChargeCreateOptions
            {
                Amount      = (long)Math.Ceiling(amount), // 1 dollar is equal to 100 cent
                Currency    = "USD",
                Description = "Charge for " + _me.email + " to abonnement " + abonnement.titre,
                Source      = stripeToken,
            };
            var service = new ChargeService();

            InsAbonne insAbonne = new InsAbonne();

            insAbonne.Abo_id    = abonnement.id;
            insAbonne.Ins_id    = _me.id;
            insAbonne.libelle   = "Abonnement " + abonnement.titre;
            insAbonne.status    = 1;
            insAbonne.archived  = 1;
            insAbonne.etat      = abonnement.nbrePost;
            insAbonne.created   = DateTime.Now;
            insAbonne.dateDebut = DateTime.Now.ToString();

            if (!needAbonnement() && DateTime.Parse(lastAsbonnement.dateFin) > DateTime.Now)
            {
                insAbonne.dateFin               = DateTime.Parse(lastAsbonnement.dateFin).AddMonths(1).ToString();
                insAbonne.etat                 += lastAsbonnement.etat;
                lastAsbonnement.status          = 0;
                db.Entry(lastAsbonnement).State = EntityState.Modified;
            }
            else
            {
                insAbonne.dateFin = DateTime.Now.AddMonths(1).ToString();
            }
            db.InsAbonne.Add(insAbonne);
            try
            {
                Charge charge = service.Create(stripeOptions);
                var    map    = new Dictionary <String, String>();
                map.Add("@ViewBag.titre", " Payment de l'abonnement " + abonnement.titre);
                map.Add("@ViewBag.login", _me.login);
                map.Add("@ViewBag.content", "Votre abonnement a bien été pris en compte. Bénéficiez du meilleur de nos service.");
                string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);
                MsMail mail = new MsMail();
                if (this.lastAsbonnement != null)
                {
                    lastAsbonnement.status          = 0;
                    db.Entry(lastAsbonnement).State = EntityState.Modified;
                }
                db.SaveChanges();

                //TODO retraviller le mail avec du HTML
                await mail.Send(_me.email, "Abonnement", body);

                return(Json(new { result_code = 1, data = getJson(insAbonne) }, JsonRequestBehavior.AllowGet));
            }
            catch (StripeException e)
            {
                return(Json(new { result_code = -1, message = "An exception occured" }, JsonRequestBehavior.AllowGet));
            }
        }
Example #16
0
        public async Task <JsonResult> PayContratClient(String stripeToken, Decimal idPostuler)
        {
            if (_me == null)
            {
                return(Json(new { result_code = -1000, message = "Session expired" }, JsonRequestBehavior.AllowGet));
            }
            if (_me.type != "client")
            {
                return(Json(new { result_code = -10, message = "Not autorized for this action" }, JsonRequestBehavior.AllowGet));
            }
            Postuler postuler = db.Postuler.FirstOrDefault(x => x.id == idPostuler);

            if (postuler == null || String.IsNullOrEmpty(stripeToken))
            {
                return(Json(new { result_code = -1, message = "Data not found" }, JsonRequestBehavior.AllowGet));
            }
            StripeConfiguration.SetApiKey(STRIPE_API_KEY);

            double amount = postuler.Job.remuneration.Value * 25 / 100;

            if (amount <= 0)
            {
                return(Json(new { result_code = -1, message = "Amount not valid" }, JsonRequestBehavior.AllowGet));
            }
            var stripeOptions = new ChargeCreateOptions
            {
                Amount      = (long)amount, // 1 dollar is equal to 100 cent.
                Currency    = "USD",
                Description = "Charge for payment of 25% of" + postuler.libelle,
                Source      = stripeToken,
            };
            var service = new ChargeService();

            postuler.etatClient      = "2";
            postuler.signatureClient = 1;
            postuler.dateSignClient  = DateTime.Now;
            db.Entry(postuler).State = EntityState.Modified;

            Paiement paiement = new Paiement();

            paiement.archived = 1;
            paiement.avance   = amount;
            paiement.created  = DateTime.Now;
            paiement.etat     = 0; //TODO mettre le bon etat
            paiement.status   = 0; //TODO mettre le bon status je suppose o veut dire non achevé
            paiement.Ins_id   = postuler.Ins_id;
            paiement.Job_id   = postuler.Job_id;
            paiement.libelle  = "Paiement de 25% de l'offre";
            paiement.montant  = postuler.Job.remuneration.Value;
            paiement.Pos_id   = postuler.id;
            paiement.userId   = Convert.ToInt32(_me.id);
            paiement.reste    = postuler.Job.remuneration - amount;

            db.Paiement.Add(paiement);
            try
            {
                Charge charge = service.Create(stripeOptions);
                var    map    = new Dictionary <String, String>();
                map.Add("@ViewBag.titre", "Paiement de 25% du salaire via skype" + postuler.libelle);
                map.Add("@ViewBag.login", _me.login);
                map.Add("@ViewBag.content", "Votre paiement a bien été pris en compte. Le montant à été prélever de votre compte avec succès. Reste à payer : 5 $. Bénéficiez du meilleur de nos service.");
                string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);
                MsMail mail = new MsMail();

                db.SaveChanges();

                //TODO retraviller le mail avec du HTML
                await mail.Send(_me.email, "Paiement", body);

                //TODO rediriger a la liste des candidatures
                return(Json(new { result_code = 1, postuler = getJson(postuler), payment = getJson(paiement) }, JsonRequestBehavior.AllowGet));
            }
            catch (StripeException e)
            {
                return(Json(new { result_code = -1, message = "An exception occured" }, JsonRequestBehavior.AllowGet));
            }
        }
Example #17
0
        public async Task <ActionResult> contratClient(String stripeToken)
        {
            Postuler currentPostuler = (Postuler)Session["postuler"];

            if (currentPostuler == null || _me == null || _me.type != "client")
            {
                TempData["result_code"] = -1;
                TempData["message"]     = "Temps fourni pour le payment est expiré veuillez réessayer.";
                TempData.Keep();
                //TODO rediriger a la liste des candidatures
                return(RedirectToAction("Index", "Home"));
            }
            if (String.IsNullOrEmpty(stripeToken))
            {
                return(HttpNotFound());
            }
            StripeConfiguration.SetApiKey(STRIPE_API_KEY);

            var stripeOptions = new ChargeCreateOptions
            {
                Amount      = (long)Math.Ceiling(currentPostuler.Job.remuneration.Value) * 25 / 100, // 1 dollar is equal to 100 cent.
                Currency    = "USD",
                Description = "Charge for payment of 25% of" + currentPostuler.libelle,
                Source      = stripeToken,
                //Customer = customer.Id
            };
            var service = new ChargeService();

            if (Session["id"] == null)
            {
                return(HttpNotFound());
            }
            int idUserSession = Convert.ToInt32(Session["id"]);

            Postuler postuler = db.Postuler.FirstOrDefault(p => p.id == currentPostuler.id);

            if (postuler == null)
            {
                return(HttpNotFound());
            }
            postuler.etatClient      = "2";
            postuler.signatureClient = 1;
            postuler.dateSignClient  = DateTime.Now;
            db.Entry(postuler).State = EntityState.Modified;

            double   amount   = postuler.Job.remuneration.Value * 25 / 100;
            Paiement paiement = new Paiement();

            paiement.archived = 1;
            paiement.avance   = amount;
            paiement.created  = DateTime.Now;
            paiement.etat     = 0; //TODO mettre le bon etat
            paiement.Ins_id   = postuler.Ins_id;
            paiement.Job_id   = postuler.Job_id;
            paiement.libelle  = "Paiement de 25% de l'offre ";
            paiement.montant  = postuler.Job.remuneration.Value;
            paiement.Pos_id   = postuler.id;
            paiement.userId   = idUserSession;
            paiement.reste    = postuler.Job.remuneration - amount;
            paiement.status   = 0; //TODO mettre le bon status je suppose o veut dire non achevé

            db.Paiement.Add(paiement);

            try
            {
                Charge charge = service.Create(stripeOptions);

                var map = new Dictionary <String, String>();
                map.Add("@ViewBag.titre", "Paiement de 25% du salaire via stripe " + currentPostuler.libelle);
                map.Add("@ViewBag.login", _me.login);
                map.Add("@ViewBag.content", "Votre paiement a bien été pris en compte. Le montant à été prélever de votre compte avec succès. Reste à payer :" + paiement.reste + ". Bénéficiez du meilleur de nos service.");
                string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);
                MsMail mail = new MsMail();

                db.SaveChanges();
                List <string> mylistmail = new List <string>(new string[] { _me.email, Constante.mailCompagny });
                //TODO retraviller le mail avec du HTML
                await mail.Send(mylistmail, "Paiement frais location candidat", body);

                //TODO rediriger a la liste des candidatures
                return(RedirectToAction("ListPostulant", new { id = postuler.Job_id }));
            }
            catch (StripeException e)
            {
            }
            ViewBag.inscritCurrent = _me;
            return(View(currentPostuler));
        }
Example #18
0
        public async Task <ActionResult> addTalonPaie(Document document)
        {
            Inscrire inscrire = db.Inscrire.Where(p => p.archived == 1 && p.id == document.Ins_id).FirstOrDefault();

            if (inscrire == null)
            {
                return(HttpNotFound());
            }

            List <string> listFichier = new List <string>();

            if (Request.Files.Count > 0)
            {
                var file = Request.Files[0];
                if (file != null && file.ContentLength > 0)
                {
                    try
                    {
                        var filename = Path.GetFileName(file.FileName);

                        //verification de l'extention du fichiers
                        var supportedTypes = new[] { ".png", ".jpg", ".jpeg", ".gif", ".pdf", ".docx" };
                        var extention      = Path.GetExtension(filename);
                        if (!supportedTypes.Contains(extention))
                        {
                            String message = "L'extention du fichier n'est pas valide ! Veuillez selectionnez une extention parmis les suivants  .png, .jpg, .jpeg, .gif, .pdf, .docx";
                            return(RedirectToAction("ErrorPage", "Home", new { sms = message }));
                        }
                        //end verification

                        var formattedFilename = string.Format("{0}-{1}{2}"
                                                              , Path.GetFileNameWithoutExtension(filename)
                                                              , Guid.NewGuid().ToString("N")
                                                              , Path.GetExtension(filename));
                        string path = Path.Combine(Server.MapPath("~/Fichier"),
                                                   Path.GetFileName(formattedFilename));
                        file.SaveAs(path);
                        listFichier.Add(path);

                        document.chemin = formattedFilename;
                    }
                    catch (Exception ex)
                    {
                        ViewBag.Message = "ERROR:" + ex.Message.ToString();
                        return(RedirectToAction("talonPaieAdmin", new { idPost = document.Pos_id, idIns = document.Ins_id, idJob = document.Job_id }));
                    }
                }
            }

            try
            {
                document.archived = 1;
                document.status   = 1;
                document.etat     = 1;
                document.created  = DateTime.Now;
                document.type     = Constante.typeTalonPaie;
                db.Document.Add(document);

                var map = new Dictionary <String, String>();
                map.Add("@ViewBag.titre", "Confirmation reception  Talon de paie ");
                map.Add("@ViewBag.login", "");
                map.Add("@ViewBag.content", "Vous avez reçus un talon de paie veuillez consulter ce dernier ci-dessous oubien dans votre compte sur NiovarJobs");
                string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);
                MsMail mail = new MsMail();

                await mail.Send(inscrire.email, "Nouveau talon de paie pour le candida : " + inscrire.login, body, null, null, listFichier);

                db.SaveChanges();
                return(RedirectToAction("talonPaieAdmin", new { idPost = document.Pos_id, idIns = document.Ins_id, idJob = document.Job_id }));
            }
            catch (DbEntityValidationException ex)
            {
                return(HttpNotFound());

                /*  foreach (var entityValidationErrors in ex.EntityValidationErrors)
                 * {
                 *    foreach (var validationError in entityValidationErrors.ValidationErrors)
                 *    {
                 *        Response.Write("Property: " + validationError.PropertyName + " Error: " + validationError.ErrorMessage);
                 *    }
                 * }*/
            }


            return(RedirectToAction("talonPaieAdmin", new { idPost = document.Pos_id, idIns = document.Ins_id, idJob = document.Job_id }));
        }
        public async Task <ActionResult> Create([Bind(Include = "login,email,password,cpassword,type")] Inscrire inscrire)
        {
            if (ModelState.IsValid)
            {
                Inscrire emailExist = db.Inscrire.Where(x => x.email == inscrire.email && x.archived == 1).FirstOrDefault();

                if (emailExist != null)
                {
                    if (emailExist.etat == 0)
                    {
                        ViewBag.Message = "Ce compte existe déja mais il n'a pas été confirmer par mail";
                    }
                    else
                    {
                        ViewBag.Message = "Cette adresse mail est dejà utilisé par un autre compte";
                    }
                }
                else
                {
                    if (inscrire.type.Equals("client"))
                    {
                        inscrire.nom = inscrire.login;
                    }


                    inscrire.status   = 0;
                    inscrire.archived = 1;
                    inscrire.etat     = 0;
                    inscrire.created  = DateTime.Now;
                    db.Inscrire.Add(inscrire);
                    db.SaveChanges();

                    if (inscrire.type.Equals("client"))
                    {
                        Page page = new Page();
                        page.Ins_id   = inscrire.id;
                        page.archived = 1;
                        page.created  = DateTime.Now;
                        page.status   = 1;
                        db.Page.Add(page);
                        db.SaveChanges();
                    }


                    var url = MsMail.baseUrl + "Inscrires/Confirm?regId=" + inscrire.id;

                    var map = new Dictionary <String, String>();
                    map.Add("@ViewBag.ConfirmationLink", url);
                    map.Add("@ViewBag.login", inscrire.login);
                    string body = MsMail.BuldBodyTemplate("~/EmailTemplate/Text.cshtml", map);
                    MsMail mail = new MsMail();

                    await mail.Send(inscrire.email, "Email de confirmation du compte", body);

                    ViewBag.Message = "Un courriel de confirmation vous a été envoyer à votre adresse mail ";

                    return(View(inscrire));
                }
            }

            return(View(inscrire));
        }
        public async Task <JsonResult> contratLocationClient(String stripeToken, decimal idLocation)
        {
            if (_me == null)
            {
                return(Json(new { result_code = -1000, message = "Session expired" }, JsonRequestBehavior.AllowGet));
            }
            if (_me.Equals("candidat"))
            {
                return(Json(new { result_code = -1, message = "Your are not allowed" }, JsonRequestBehavior.AllowGet));
            }

            Location currentLocation = db.Location.FirstOrDefault(p => p.id == idLocation);

            if (currentLocation == null)
            {
                return(Json(new { result_code = -1, message = "item not found" }, JsonRequestBehavior.AllowGet));
            }

            StripeConfiguration.SetApiKey(STRIPE_API_KEY);
            var amount        = (long)Math.Ceiling(currentLocation.remuneration.Value) * 35 / 100;
            var stripeOptions = new ChargeCreateOptions
            {
                Amount      = (long)amount, // 1 dollar is equal to 100 cent.
                Currency    = "USD",
                Description = "Charge for payment of 35% of Location",
                Source      = stripeToken,
            };
            var service = new ChargeService();

            currentLocation.dateSgnClt      = DateTime.Now;
            currentLocation.avisClient      = 2;
            currentLocation.signClient      = 2;
            db.Entry(currentLocation).State = EntityState.Modified;


            FraisLocation fraisLocation = new FraisLocation();

            fraisLocation.archived = 1;
            fraisLocation.avance   = amount;
            fraisLocation.created  = DateTime.Now;
            fraisLocation.etat     = 0; //TODO mettre le bon etat
            fraisLocation.Ins_id   = currentLocation.Ins_id;
            fraisLocation.Ins_id2  = currentLocation.Ins_id2;
            fraisLocation.Loc_id   = currentLocation.id;
            fraisLocation.libelle  = "Paiement de 35% pour la location";
            fraisLocation.montant  = Convert.ToDouble(currentLocation.remuneration);
            fraisLocation.userId   = (int)_me.id;
            fraisLocation.reste    = Convert.ToDouble(currentLocation.remuneration) - amount;
            fraisLocation.status   = 0;

            //TODO mettre le bon status je suppose o veut dire non achevé
            db.FraisLocation.Add(fraisLocation);


            try
            {
                Charge charge = service.Create(stripeOptions);
                var    map    = new Dictionary <String, String>();
                map.Add("@ViewBag.titre", "Paiement de 35% du salaire pour la location  de l'employé " + currentLocation.Inscrire.nom);
                map.Add("@ViewBag.login", _me.nom);
                map.Add("@ViewBag.content", "Votre paiement a bien été pris en compte. Le montant à été prélever de votre compte avec succès. Bénéficiez du meilleur de nos service.");
                string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);

                var map1 = new Dictionary <String, String>();
                map1.Add("@ViewBag.titre", "Vous êtes sollicité pour un travail  ");
                map1.Add("@ViewBag.login", currentLocation.Inscrire.nom);
                map1.Add("@ViewBag.content", "Votre demande de location a été confimer. Vous êtes conviez a prendre service le plutôt possible.");
                string body2 = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map1);

                MsMail mail  = new MsMail();
                MsMail mail2 = new MsMail();

                db.SaveChanges();

                //TODO retraviller le mail avec du HTML
                await mail.Send(_me.email, "Paiement location", body);

                await mail2.Send(currentLocation.Inscrire.email, "NiovarJobs, Demande location accepté ", body2);

                //TODO rediriger a la liste des candidatures
                return(Json(new { result_code = 1, data = getJson(currentLocation) }, JsonRequestBehavior.AllowGet));
            }
            catch (StripeException e)
            {
                return(Json(new { result_code = -2, message = "An execption occured" }, JsonRequestBehavior.AllowGet));
            }
        }
Example #21
0
        public async Task <ActionResult> contratLocationClient(String stripeToken, decimal idLocation)
        {
            Location currentLocation = db.Location.FirstOrDefault(p => p.id == idLocation);

            if (currentLocation == null)
            {
                TempData["result_code"] = -1;
                TempData["message"]     = "Temps fourni pour le payment est expiré veuillez réessayer.";
                TempData.Keep();
                //TODO rediriger a la liste des candidatures
                return(RedirectToAction("mesDemandeLocation"));
            }

            Inscrire candidat = db.Inscrire.Where(p => p.id == currentLocation.Ins_id).First();

            if (candidat == null)
            {
                return(HttpNotFound());
            }
            Inscrire client = db.Inscrire.Where(p => p.id == currentLocation.Ins_id2).First();

            if (client == null)
            {
                return(HttpNotFound());
            }


            if (String.IsNullOrEmpty(stripeToken))
            {
                return(HttpNotFound());
            }
            StripeConfiguration.SetApiKey("sk_test_51Gx6jgIK0UhIWHGbs9dcTW7tyGLkl39s6waxls9Z5D8E0arsL4bjy9N0g563Tlzo5JNvbeFOkAl5fMEY85eerPIx00mYJFiqLY");

            var stripeOptions = new ChargeCreateOptions
            {
                Amount      = (long)Math.Ceiling(currentLocation.remuneration.Value) * 35 / 100, // 1 dollar is equal to 100 cent.
                Currency    = "USD",
                Description = "Charge for payment of 35% of Location",
                Source      = stripeToken,
                //Customer = customer.Id
            };
            var service = new ChargeService();

            if (Session["id"] == null)
            {
                return(HttpNotFound());
            }
            int idUserSession = Convert.ToInt32(Session["id"]);

            currentLocation.dateSgnClt      = DateTime.Now;
            currentLocation.avisClient      = 2;
            currentLocation.signClient      = 2;
            db.Entry(currentLocation).State = EntityState.Modified;


            double        amount        = (long)Math.Ceiling(currentLocation.remuneration.Value) * 35 / 100;
            FraisLocation fraisLocation = new FraisLocation();

            fraisLocation.archived = 1;
            fraisLocation.avance   = amount;
            fraisLocation.created  = DateTime.Now;
            fraisLocation.etat     = 0; //TODO mettre le bon etat
            fraisLocation.Ins_id   = candidat.id;
            fraisLocation.Ins_id2  = client.id;
            fraisLocation.Loc_id   = currentLocation.id;
            fraisLocation.libelle  = "Paiement de 35% pour la location";
            fraisLocation.montant  = Convert.ToDouble(currentLocation.remuneration);
            fraisLocation.userId   = idUserSession;
            fraisLocation.reste    = Convert.ToDouble(currentLocation.remuneration) - amount;
            fraisLocation.status   = 0;

            //TODO mettre le bon status je suppose o veut dire non achevé
            db.FraisLocation.Add(fraisLocation);


            try
            {
                Charge charge = service.Create(stripeOptions);
                var    map    = new Dictionary <String, String>();
                map.Add("@ViewBag.titre", "Paiement de 35% du salaire pour la location  de l'employé " + candidat.login);
                map.Add("@ViewBag.login", client.login);
                map.Add("@ViewBag.content", "Votre paiement a bien été pris en compte. Le montant à été prélever de votre compte avec succès. Bénéficiez du meilleur de nos service.");
                string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);

                var map1 = new Dictionary <String, String>();
                map1.Add("@ViewBag.titre", "Vous êtes sollicité pour un travail  ");
                map1.Add("@ViewBag.login", candidat.login);
                map1.Add("@ViewBag.content", "Votre demande de location a été confimer. Vous êtes conviez a prendre service le plutôt possible.");
                string body2 = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map1);

                MsMail mail  = new MsMail();
                MsMail mail2 = new MsMail();

                db.SaveChanges();

                //TODO retraviller le mail avec du HTML
                await mail.Send(client.email, "Paiement location", body);

                await mail2.Send(candidat.email, "NiovarJobs, Demande location accepté ", body2);

                //TODO rediriger a la liste des candidatures
                return(RedirectToAction("mesDemandeLocation"));
            }
            catch (StripeException e)
            {
                // throw;
                return(RedirectToAction("contratLocationClient", new { id = currentLocation.id }));
            }

            return(RedirectToAction("contratLocationClient", new { id = currentLocation.id }));
        }
        public async Task <ActionResult> Payments(String stripeToken)
        {
            Abonnement abonnement = (Abonnement)Session["abonnement"];

            if (abonnement == null || _me == null || _me.type != "client")
            {
                TempData["result_code"] = -1;
                TempData["message"]     = "Temps fourni pour abonnement expiré veillez réessayer.";
                TempData.Keep();
                return(RedirectToAction("Index", "Home"));
            }
            if (String.IsNullOrEmpty(stripeToken))
            {
                return(HttpNotFound());
            }
            StripeConfiguration.SetApiKey(STRIPE_API_KEY);

            var stripeOptions = new ChargeCreateOptions
            {
                Amount = (long)Math.Ceiling(abonnement.montant.Value) * 100,  // 1 dollar is equal to 100 cent.

                Currency    = "USD",
                Description = "Charge for " + _me.email + " to abonnement " + abonnement.titre,
                Source      = stripeToken,
                //Customer = customer.Id
            };
            var service = new ChargeService();

            InsAbonne insAbonne = new InsAbonne();

            insAbonne.Abo_id    = abonnement.id;
            insAbonne.Ins_id    = _me.id;
            insAbonne.libelle   = "Abonnement " + abonnement.titre;
            insAbonne.status    = 1;
            insAbonne.archived  = 1;
            insAbonne.etat      = abonnement.nbrePost;
            insAbonne.created   = DateTime.Now;
            insAbonne.dateDebut = DateTime.Now.ToString();

            if (!needAbonnement() && DateTime.Parse(lastAsbonnement.dateFin) > DateTime.Now)
            {
                insAbonne.dateFin               = DateTime.Parse(lastAsbonnement.dateFin).AddMonths(1).ToString();
                insAbonne.etat                 += lastAsbonnement.etat;
                lastAsbonnement.status          = 0;
                db.Entry(lastAsbonnement).State = EntityState.Modified;
            }
            else
            {
                insAbonne.dateFin = DateTime.Now.AddMonths(1).ToString();
            }
            db.InsAbonne.Add(insAbonne);
            try
            {
                Charge charge = service.Create(stripeOptions);
                var    map    = new Dictionary <String, String>();
                map.Add("@ViewBag.titre", " Payment de l'abonnement " + abonnement.titre);
                map.Add("@ViewBag.login", _me.login);
                map.Add("@ViewBag.content", "Votre abonnement a bien été pris en compte. Bénéficiez du meilleur de nos service.");
                string body = MsMail.BuldBodyTemplate("~/EmailTemplate/CustomEmail.cshtml", map);
                MsMail mail = new MsMail();
                if (this.lastAsbonnement != null)
                {
                    lastAsbonnement.status          = 0;
                    db.Entry(lastAsbonnement).State = EntityState.Modified;
                }
                db.SaveChanges();

                //TODO retraviller le mail avec du HTML
                await mail.Send(_me.email, "Abonnement", body);
            }catch (StripeException e)
            {
            }
            ViewBag.inscrire  = _me;
            ViewBag.insAbonne = insAbonne;
            ViewBag.hasPaid   = true;
            return(View(abonnement));
        }
        // GET: Inscrires/Create
        public async Task <ActionResult> Payments(decimal id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Abonnement abonnement = db.Abonnement.Find(id);

            if (abonnement == null)
            {
                return(HttpNotFound());
            }


            if (hasIllimitedAbonnement(lastAsbonnement))
            {
                TempData["result_code"] = -1;
                TempData["message"]     = "Vous ne pouvez souscrire a un autre abonnement quand vos posts illimités sont encore actifs.";
                TempData.Keep();
                return(RedirectToAction("AbonnementList", "Profile"));
            }
            if (!needAbonnement() && isFreeAbonnement(abonnement) ||
                lastAsbonnement != null && hasFreeAbonnement(lastAsbonnement) && DateTime.Parse(lastAsbonnement.dateFin) >= DateTime.Now)

            {
                // return RedirectToAction("Abonnement", "Inscrires");
            }
            if (_me == null || _me.type != "client")
            {
                TempData["result_code"] = -1;
                TempData["message"]     = "Temps fourni pour abonnement expiré veillez réessayer.";
                TempData.Keep();
                return(RedirectToAction("Index", "Home"));
            }

            if (isFreeAbonnement(abonnement))

            {
                InsAbonne insAbonne = new InsAbonne();
                insAbonne.Abo_id    = abonnement.id;
                insAbonne.Ins_id    = _me.id;
                insAbonne.libelle   = "Abonnement " + abonnement.titre;
                insAbonne.status    = 1;
                insAbonne.archived  = 1;
                insAbonne.etat      = abonnement.nbrePost;
                insAbonne.created   = DateTime.Now;
                insAbonne.dateDebut = DateTime.Now.ToString();
                insAbonne.dateFin   = DateTime.Now.AddMonths(1).ToString();
                db.InsAbonne.Add(insAbonne);
                if (this.lastAsbonnement != null)
                {
                    lastAsbonnement.status          = 0;
                    db.Entry(lastAsbonnement).State = EntityState.Modified;
                }
                db.SaveChanges();

                //TODO retraviller le mail avec du HTML
                MsMail mail = new MsMail();
                await mail.Send(_me.email, "Abonnement " + abonnement.titre, "Votre abonnement a bien été pris en compte. Bénéficiez du meilleur de nos service.", null, null, null);

                ViewBag.inscrire  = _me;
                ViewBag.insAbonne = insAbonne;
                ViewBag.hasPaid   = true;
                return(View(abonnement));
            }
            Session.Add("abonnement", abonnement);
            ViewBag.inscrire = _me;
            return(View(abonnement));
        }