示例#1
0
        public PartialViewResult UpdatePoll(UpdatePollViewModel updatePollViewModel)
        {
            using (var unitOfWork = UnitOfWorkManager.NewUnitOfWork())
            {
                try
                {
                    // Fist need to check this user hasn't voted already and is trying to fudge the system
                    if(!_pollVoteService.HasUserVotedAlready(updatePollViewModel.AnswerId, LoggedOnReadOnlyUser.Id))
                    {
                        var loggedOnUser = MembershipService.GetUser(LoggedOnReadOnlyUser.Id);

                        // Get the answer
                        var pollAnswer = _pollAnswerService.Get(updatePollViewModel.AnswerId);

                        // create a new vote
                        var pollVote = new PollVote { PollAnswer = pollAnswer, User = loggedOnUser };

                        // Add it
                        _pollVoteService.Add(pollVote);

                        // Update the context so the changes are reflected in the viewmodel below
                        unitOfWork.SaveChanges();
                    }

                    // Create the view model and get ready return the poll partial view
                    var poll = _pollService.Get(updatePollViewModel.PollId);
                    var votes = poll.PollAnswers.SelectMany(x => x.PollVotes).ToList();
                    var alreadyVoted = (votes.Count(x => x.User.Id == LoggedOnReadOnlyUser.Id) > 0);
                    var viewModel = new PollViewModel { Poll = poll, TotalVotesInPoll = votes.Count(), UserHasAlreadyVoted = alreadyVoted };

                    // Commit the transaction
                    unitOfWork.Commit();

                    return PartialView("_Poll", viewModel);
                }
                catch (Exception ex)
                {
                    unitOfWork.Rollback();
                    LoggingService.Error(ex);
                    throw new Exception(LocalizationService.GetResourceString("Errors.GenericMessage"));
                }
            }
        }
示例#2
0
        internal static void AddUpdatePollVote(PollVote vote)
        {
            ValidatePollVote(vote);

            var existingVote = GetPollVote(vote.PollId, vote.UserId);
            if (existingVote != null && existingVote.PollAnswerId == vote.PollAnswerId)
                return;

            bool isCreate = existingVote == null;
            if (isCreate)
                PublicApi.PollVotes.Events.OnBeforeCreate(vote);
            else
                PublicApi.PollVotes.Events.OnBeforeUpdate(vote);

            PollingDataService.AddUpdatePollVote(vote);
            ExpirePoll(vote.PollId);

            if (isCreate)
                PublicApi.PollVotes.Events.OnAfterCreate(vote);
            else
                PublicApi.PollVotes.Events.OnAfterUpdate(vote);
        }
示例#3
0
    protected void ButtonSupprimer_Click(object sender, EventArgs e)
    {
        if (Cache["MembreGUID"] == null || ( Guid )Cache["MembreGUID"] == Guid.Empty)
        {
            ValidationMessage.Text    += "<br/>Choisir un membre à supprimer.<br/>";
            ValidationMessage.CssClass = "LabelValidationMessageErrorStyle";
            ValidationMessage.Visible  = true;
        }
        else
        {
            int status       = 0;
            int statusGlobal = 0;

            ValidationMessage.Text += "<br />-----------------------------------------------------<br />";
            ValidationMessage.Text += " Début de la Suppression du Membre <br />";
            ValidationMessage.Text += "-----------------------------------------------------<br />";

            Reporter.Trace("ButtonSupprimer_Click début");

            MemberInfo member = MemberInfo.Get(( Guid )Cache["MembreGUID"]);

            foreach (Questionnaire questionnaire in (QuestionnaireCollection)Cache["Questionnaires"])
            {
                int QuestionnaireID = questionnaire.QuestionnaireID;

                ValidationMessage.Text += "--- Suppression du Questionnaire : " + questionnaire.Description + ":" + questionnaire.CodeAcces + " questions : ";
                PollQuestionCollection questions = PollQuestionCollection.GetByQuestionnaire(QuestionnaireID);
                ValidationMessage.Text += questions.Count + "<br />";

                foreach (PollQuestion question in questions)
                {
                    PollAnswerCollection reponses = PollAnswerCollection.GetByPollQuestionID(question.PollQuestionId);
                    foreach (PollAnswer reponse in reponses)
                    {
                        PollVoteCollection votes = PollVoteCollection.GetVotes(reponse.PollAnswerId);
                        int nbVotes = PollVoteCollection.NumberOfVotesByAnswer(reponse.PollAnswerId);
                        ValidationMessage.Text += "----- Suppression des votes : " + nbVotes.ToString() + "<br />";
                        foreach (PollVote vote in votes)
                        {
                            status                  = PollVote.Delete(vote.VoteId);
                            statusGlobal            = statusGlobal + status;
                            ValidationMessage.Text += "      status : " + status.ToString() + "<br />";
                        }
                        ValidationMessage.Text += "---- Suppression de la Réponse : " + reponse.Answer + "<br />";
                        status                  = PollAnswer.Delete(reponse.PollAnswerId);
                        statusGlobal            = statusGlobal + status;
                        ValidationMessage.Text += "     status : " + status.ToString() + "<br />";
                    }
                    ValidationMessage.Text += "---  Suppression de la Question : " + question.Question + "<br />";
                    status = PollQuestion.Delete(question.PollQuestionId);
                    SessionState.Limitations.SupprimerQuestion();
                    statusGlobal            = statusGlobal + status;
                    ValidationMessage.Text += "    status : " + status.ToString() + "<br />";
                }

                PersonneCollection personnes = PersonneCollection.GetQuestionnaire(QuestionnaireID);
                ValidationMessage.Text += "</br>";
                ValidationMessage.Text += "Suppression des contacts : " + personnes.Count + "<br />";
                foreach (Personne p in personnes)
                {
                    ValidationMessage.Text += p.Nom + " " + p.Prenom + " " + p.EmailBureau + " " + p.Societe + "<br />";
                    status                  = Personne.Delete(p.ID_Personne);
                    statusGlobal            = statusGlobal + status;
                    ValidationMessage.Text += "status : " + status.ToString() + "<br />";
                }
                SessionState.Limitations.SupprimerInterviewes(personnes.Count);

                WebContentCollection webContents = WebContentCollection.GetWebContents(member.NomUtilisateur, questionnaire.CodeAcces.ToString());
                ValidationMessage.Text += "</br>";
                ValidationMessage.Text += "Suppression des contenus web pour le Questionnaire : " + webContents.Count + "<br />";
                foreach (WebContent wc in webContents)
                {
                    ValidationMessage.Text += wc.Section + " " + wc.Utilisateur + " " + wc.Visualisateur + "<br />";
                    status                  = WebContent.Delete(wc.WebContentID);
                    statusGlobal            = statusGlobal + status;
                    ValidationMessage.Text += "status : " + status.ToString() + "<br />";
                }

                ValidationMessage.Text += "</br>";
                ValidationMessage.Text += "Suppression des scores : " + (( ScoreCollection )Cache["Scores"]).Count + "<br />";
                foreach (Score s in ( ScoreCollection )Cache["Scores"])
                {
                    status       = Score.Delete(s.ScoreID);
                    statusGlobal = statusGlobal + status;
                }

                ValidationMessage.Text += "Suppression du Questionnaire : " + questionnaire.Description + "<br />";
                status       = Questionnaire.Delete(questionnaire.QuestionnaireID);
                statusGlobal = statusGlobal + status;
                SessionState.Limitations.SupprimerQuestionnaire();
                ValidationMessage.Text += "status : " + status.ToString() + "<br />";
            }// Fin de foreach ( Questionnaire questionnaire in Questionnaires )

            Reporter.Trace("foreach ( Questionnaire questionnaire in Questionnaires ) fin");

            ValidationMessage.Text += "Suppression des contenus web pour Tout Le Monde : " + (( WebContentCollection )Cache["WebContentsToutLeMonde"]).Count + "<br />";
            foreach (WebContent wc in ( WebContentCollection )Cache["WebContentsToutLeMonde"])
            {
                ValidationMessage.Text += wc.Section + " " + wc.Utilisateur + " " + wc.Visualisateur + "<br />";
                status                  = WebContent.Delete(wc.WebContentID);
                statusGlobal            = statusGlobal + status;
                ValidationMessage.Text += "status : " + status.ToString() + "<br />";
            }

            MembershipUser user = Membership.GetUser(( Guid )Cache["MembreGUID"]);

            Reporter.Trace("Directory.Exists( dirStyleWeb ) début");

            ValidationMessage.Text += "Suppression des styles web :<br />";
            string dirStyleWeb = Server.MapPath("~/App_Data/StyleWeb/" + user.UserName);
            if (Directory.Exists(dirStyleWeb))
            {
                List <Fichier> fichiers = Tools.GetAllFichiers(dirStyleWeb);
                if (fichiers.Count <= 0)
                {
                    ValidationMessage.Text += "-- Pas de style web<br />";
                }
                else
                {
                    foreach (Fichier f in fichiers)
                    {
                        try
                        {
                            File.Delete(f.Nom);
                            string nomFichier = Tools.GetFileNameWithoutExtension(f.Nom);
                            ValidationMessage.Text += "-- fichier supprimé : " + nomFichier + "<br />";
                        }
                        catch
                        {
                            string nomFichier = Tools.GetFileNameWithoutExtension(f.Nom);
                            ValidationMessage.Text += "-- ERREUR à la suppression du fichier : " + nomFichier + "<br />";
                        }
                    }
                }
                ValidationMessage.Text += "Suppression du répertoire : " + user.UserName;
                try
                {
                    Directory.Delete(dirStyleWeb);
                }
                catch (Exception ex)
                {
                    ValidationMessage.Text += " Erreur : " + ex.Message + "</br>";
                }
                ValidationMessage.Text += "</br>";
            }
            else
            {
                ValidationMessage.Text += "-- Pas de style web<br />";
            }
            ValidationMessage.Text += "</br>";

            Reporter.Trace("Directory.Exists( dirStyleWeb ) fin");

            ValidationMessage.Text += "Suppression du fichier de paramètres :<br />";
            string fileName = Server.MapPath("~/App_Data/MemberSettings/" + user.UserName + ".xml");
            if (File.Exists(fileName))
            {
                File.Delete(fileName);
                string nomFichier = Tools.GetFileNameWithoutExtension(fileName);
                ValidationMessage.Text += "-- fichier supprimé : " + nomFichier + "<br />";
            }
            else
            {
                string nomFichier = Tools.GetFileNameWithoutExtension(fileName);
                ValidationMessage.Text += "-- ERREUR à la suppression du fichier : " + nomFichier + "<br />";
            }
            ValidationMessage.Text += "</br>";

            Reporter.Trace("SmtpServer.Get( member.MembreGUID ) début");

            SmtpServer stmpServeur = SmtpServer.Get(member.MembreGUID);
            if (stmpServeur != null)
            {
                ValidationMessage.Text += "Suppression du Serveur SMTP :" + stmpServeur.ServerName + "<br />";
                status                  = SmtpServer.Delete(stmpServeur.SmtpServerID);
                statusGlobal            = statusGlobal + status;
                ValidationMessage.Text += "status : " + status.ToString() + "<br />";
            }

            Reporter.Trace("SmtpServer.Get( member.MembreGUID ) fin");

            ValidationMessage.Text += "Suppression du Membre : " + member.Nom + " " + member.Prenom + " " + user.Email + " " + user.UserName + "<br />";
            status                  = MemberInfo.Delete(( Guid )Cache["MembreGUID"]);
            statusGlobal            = statusGlobal + status;
            ValidationMessage.Text += "status : " + status.ToString() + "<br />";
            ValidationMessage.Text += "Suppression de l'Utilisateur : " + user.UserName + "<br />";

            bool ok = Membership.DeleteUser(user.UserName, true);
            if (ok)
            {
                status = 0;
            }
            else
            {
                status = 1;
            }
            ValidationMessage.Text += "status : " + status.ToString() + "<br />";
            ValidationMessage.Text += "<br />status global : " + statusGlobal.ToString() + "<br />";

            ValidationMessage.Visible = true;

            // Forcer les Questionnaires a se recharger depuis la Base de Donnees
            SessionState.Questionnaires = null;
            SessionState.Questionnaire  = null;
            Cache["MembreGUID"]         = Guid.Empty;

            // Si c'est un membre qui supprime sont compte
            if (User.IsInRole("Administrateur") == false)
            {
                // Message de suppression d'un membre a l'admin
                string sujetEmail2 = "Suppression d'un Membre sur le site : " + Global.SettingsXml.SiteNom;
                string bodyEmail2  = "";

                bodyEmail2 += "Nom d'utilisateur : " + SessionState.MemberInfo.NomUtilisateur + "<br/>";
                bodyEmail2 += "Nom : " + SessionState.MemberInfo.Nom + "<br/>";
                bodyEmail2 += "Prénom : " + SessionState.MemberInfo.Prenom + "<br/>";
                bodyEmail2 += "Société : " + SessionState.MemberInfo.Societe + "<br/>";
                bodyEmail2 += "Téléphone : " + SessionState.MemberInfo.Telephone + "<br/>";
                bodyEmail2 += "Adresse : " + SessionState.MemberInfo.Adresse + "<br/>";
                bodyEmail2 += "Email : " + user.Email + "<br/>";
                bodyEmail2 += "<br/>Accès à l'application :<br/>" + string.Format("<a href=\"{0}\" >{1}</a>", Utils.WebSiteUri, Utils.WebSiteUri) + "<br/>";

                MemberInfo     admin     = MemberInfo.GetMemberInfo("admin");
                MembershipUser userAdmin = Membership.GetUser(admin.MembreGUID);
                Courriel.EnvoyerEmailToAssynchrone(admin.MembreGUID, userAdmin.Email, sujetEmail2, bodyEmail2);

                // Deconnecter l'utilisateur
                FormsAuthentication.SignOut();
                HttpContext.Current.Session.Abandon();
                Response.Redirect("~/Member/Login.aspx");
            }
        }
    }
 public PollVote Add(PollVote pollVote)
 {
     return(ContextPerRequest.Db.PollVote.Add(pollVote));
 }
 public void Delete(PollVote pollVote)
 {
     ContextPerRequest.Db.PollVote.Remove(pollVote);
 }
示例#6
0
 public async Task <PollVote> UpdatePollVoteAsync(PollVote pv)
 {
     return(await _repo.UpdatePollVoteAsync(pv));
 }
示例#7
0
 public async Task <PollVote> DeletePollVoteAsync(PollVote pv)
 {
     return(await _repo.DeletePollVoteAsync(pv));
 }
 public PollVote Add(PollVote pollVote)
 {
     return(_context.PollVote.Add(pollVote));
 }
示例#9
0
 public void InsertVote(PollVote vote)
 {
     context.PollVotes.Add(vote);
 }
示例#10
0
 internal static void DeletePollVote(PollVote vote)
 {
     ValidatePollVote(vote);
     PublicApi.PollVotes.Events.OnBeforeDelete(vote);
     PollingDataService.DeletePollVote(vote.PollId, vote.UserId);
     ExpirePoll(vote.PollId);
     PublicApi.PollVotes.Events.OnAfterDelete(vote);
 }
示例#11
0
        private static void ValidatePollVote(PollVote vote)
        {
            if (vote.CreatedDateUtc == DateTime.MinValue)
                vote.CreatedDateUtc = DateTime.UtcNow;

            vote.LastUpdatedDateUtc = DateTime.UtcNow;

            Poll poll = GetPoll(vote.PollId);
            if (poll == null)
                throw new PollException("The poll associated to the vote does not exist.");

            if (poll.VotingEndDateUtc.HasValue && poll.VotingEndDateUtc.Value < DateTime.UtcNow)
                throw new PollException("Voting has ended. Votes cannot be added or changed.");

            if (!poll.Answers.Any(x => x.Id == vote.PollAnswerId))
                throw new PollException("The poll answer doesn't exist on this poll.");

            var group = TEApi.Groups.Get(poll.ApplicationId);
            if (group == null || group.HasErrors())
                throw new PollException("The group identified on the poll is invalid.");

            if (TEApi.Users.AccessingUser.IsSystemAccount.Value)
                throw new PollException("You must be logged in to vote on a poll");

            if (!PollingPermissionService.CanVoteOnPolls(TEApi.Groups.ContentTypeId, poll.ApplicationId))
                throw new PollException("The user does not have permission to vote on polls in this group.");
        }
示例#12
0
 public PollVote Add(PollVote pollVote)
 {
     return(_pollVoteRepository.Add(pollVote));
 }
示例#13
0
 public void Delete(PollVote pollVote)
 {
     _pollVoteRepository.Delete(pollVote);
 }
示例#14
0
    protected void ButtonSupprimer_Click(object sender, EventArgs e)
    {
        if ((int)Cache["QuestionnaireID"] == 0)
        {
            ValidationMessage.Text    += "<br/>Choisir un questionnaire à supprimer.<br/>";
            ValidationMessage.CssClass = "LabelValidationMessageErrorStyle";
            ValidationMessage.Visible  = true;
        }
        else
        {
            int status       = 0;
            int statusGlobal = 0;

            Questionnaire questionnaire = Questionnaire.GetQuestionnaire(( int )Cache["QuestionnaireID"]);

            Reporter.Trace("Questionnaire delete");

            ValidationMessage.Text += "<br />-----------------------------------------------------<br />";
            ValidationMessage.Text += " Début de la Suppression du Questionnaire <br />";
            ValidationMessage.Text += "-----------------------------------------------------<br />";

            foreach (PollQuestion question in ( PollQuestionCollection )Cache["Questions"])
            {
                PollAnswerCollection reponses = PollAnswerCollection.GetByPollQuestionID(question.PollQuestionId);
                foreach (PollAnswer reponse in reponses)
                {
                    PollVoteCollection votes = PollVoteCollection.GetVotes(reponse.PollAnswerId);
                    int nbVotes = PollVoteCollection.NumberOfVotesByAnswer(reponse.PollAnswerId);
                    ValidationMessage.Text += "----- Suppression des votes : " + nbVotes.ToString() + "<br />";
                    foreach (PollVote vote in votes)
                    {
                        status                  = PollVote.Delete(vote.VoteId);
                        statusGlobal            = statusGlobal + status;
                        ValidationMessage.Text += "     status : " + status.ToString() + "<br />";
                    }
                    ValidationMessage.Text += "---- Suppression de la Réponse : " + reponse.Answer + "<br />";
                    status                  = PollAnswer.Delete(reponse.PollAnswerId);
                    statusGlobal            = statusGlobal + status;
                    ValidationMessage.Text += "     status : " + status.ToString() + "<br />";
                }
                ValidationMessage.Text += "--- Suppression de la Question : " + question.Question + "<br />";
                status       = PollQuestion.Delete(question.PollQuestionId);
                statusGlobal = statusGlobal + status;
                SessionState.Limitations.SupprimerQuestion();
                ValidationMessage.Text += "    status : " + status.ToString() + "<br />";
            }

            Reporter.Trace("Questionnaire delete fin");

            //PersonneCollection personnes = PersonneCollection.GetQuestionnaire( ( int )Cache[ "QuestionnaireID" ] );
            ValidationMessage.Text += "</br>";
            ValidationMessage.Text += "Suppression des contacts : " + (( PersonneCollection )Cache["Personnes"]).Count + "<br />";
            foreach (Personne p in ( PersonneCollection )Cache["Personnes"])
            {
                ValidationMessage.Text += p.Nom + " " + p.Prenom + " " + p.EmailBureau + " " + p.Societe + "<br />";
                status                  = Personne.Delete(p.ID_Personne);
                statusGlobal            = statusGlobal + status;
                ValidationMessage.Text += "status : " + status.ToString() + "<br />";
            }
            SessionState.Limitations.SupprimerInterviewes((( PersonneCollection )Cache["Personnes"]).Count);

            MemberInfo membre = MemberInfo.GetMemberInfo(questionnaire.MembreGUID);
            //WebContentCollection webContents = WebContentCollection.GetWebContents( membre.NomUtilisateur, questionnaire.CodeAcces.ToString() );
            ValidationMessage.Text += "</br>";
            ValidationMessage.Text += "Suppression des contenus web : " + (( WebContentCollection )Cache["WebContents"]).Count + "<br />";
            foreach (WebContent wc in ( WebContentCollection )Cache["WebContents"])
            {
                ValidationMessage.Text += wc.Section + " " + wc.Utilisateur + " " + wc.Visualisateur + "<br />";
                status                  = WebContent.Delete(wc.WebContentID);
                statusGlobal            = statusGlobal + status;
                ValidationMessage.Text += "status : " + status.ToString() + "<br />";
            }

            ValidationMessage.Text += "</br>";
            ValidationMessage.Text += "Suppression des scores : " + (( ScoreCollection )Cache["Scores"]).Count + "<br />";
            foreach (Score s in ( ScoreCollection )Cache["Scores"])
            {
                status       = Score.Delete(s.ScoreID);
                statusGlobal = statusGlobal + status;
            }

            ValidationMessage.Text += "Suppression du Questionnaire : " + questionnaire.Description + "<br />";
            status       = Questionnaire.Delete(questionnaire.QuestionnaireID);
            statusGlobal = statusGlobal + status;
            SessionState.Limitations.SupprimerQuestionnaire();
            ValidationMessage.Text   += "status : " + status.ToString() + "<br />";
            ValidationMessage.Text   += "<br />status global : " + statusGlobal.ToString() + "<br />";
            ValidationMessage.Visible = true;

            // Forcer les Questionnaires a se recharger depuis la Base de Donnees
            SessionState.Questionnaires = null;
            SessionState.Questionnaire  = null;
            Cache["QuestionnaireID"]    = 0; // fermer le formulaire

            // On ne supprime qu'une fois !
            ButtonSupprimer.Visible = false;
        }
    }
示例#15
0
 public PollVote Update(PollVote entity)
 {
     return(Channel.Update(entity));
 }
示例#16
0
 public void UpdateVote(PollVote vote)
 {
     context.Entry(vote).State = EntityState.Modified;
 }
示例#17
0
 public PollVote Update(PollVote entity)
 {
     throw new NotImplementedException();
 }
    private void ImporterFichier()
    {
        DateTime dateDebutAnalyse = DateTime.Now;

        if (User.IsInRole("Administrateur") && MemberInfoData == null)
        {
            MessageAnalyse = "Désolé Admin, sélectionnez un Membre pour importer des données.";
            EventFinImport.Set();
            FinTraitement = true;
            return;
        }

        if (DocumentNom.PostedFile.FileName == "")
        {
            MessageAnalyse = "Choisissez un fichier à importer. ";
            EventFinImport.Set();
            FinTraitement = true;
            return;
        }

        if (CheckBoxImportVotes.Checked && CheckBoxImportInterviewes.Checked == false)
        {
            CheckBoxExportIntervieves.Checked = true;
            MessageAnalyse = "Vous ne pouvez pas importer les votes sans exporter les interviewés. ";
            EventFinImport.Set();
            FinTraitement = true;
            return;
        }

        HttpPostedFile file = DocumentNom.PostedFile;
        int            size = file.ContentLength;

        if (size <= 0)
        {
            MessageAnalyse = "Un problème est survenu avec le téléchargement du fichier sur le serveur, le fichier n'est pas disponible. ";
            EventFinImport.Set();
            FinTraitement = true;
            return;
        }

        String virtualPath = "~/MemberDataFiles/";
        string filePath    = virtualPath;

        virtualPath += Path.GetFileName(DocumentNom.PostedFile.FileName);
        String physicalDir  = Server.MapPath(filePath);
        String physicalPath = Server.MapPath(virtualPath);

        // Sauver le fichier
        try
        {
            int tailleMax = 10 * 1024 * 1024; // 10 Mo
            if (DocumentNom.PostedFile.ContentLength >= tailleMax)
            {
                MessageAnalyse += "Error taille du fichier : " + Tools.FileSizeFormat(DocumentNom.PostedFile.ContentLength, "N");
                MessageAnalyse += " supérieure à la taille maximum : " + Tools.FileSizeFormat(tailleMax, "N");
                EventFinImport.Set();
                FinTraitement = true;
                return;
            }
            DocumentNom.PostedFile.SaveAs(physicalPath);
        }
        catch (Exception ex)
        {
            MessageAnalyse += ex.Message;
            EventFinImport.Set();
            FinTraitement = true;
            return;
        }

        DataSet dataSet = new DataSet();

        try
        {
            XmlReader xmlr = XmlReader.Create(physicalPath);
            dataSet.ReadXml(xmlr);
            xmlr.Close();
        }
        catch
        {
            MessageAnalyse += "Fichier non valide. ";
            File.Delete(physicalPath);
            EventFinImport.Set();
            FinTraitement = true;
            return;
        }

        // Dans le cadre d'un Tread on ne peut pas utiliser SessionState
        Limitation limitations = new Limitation(MemberInfoData.MembreGUID);

        //
        // Creer les Questionnaires
        //
        foreach (DataTable dt in dataSet.Tables)
        {
            if (dt.TableName.Contains("Questionnaire"))
            {
                // Tester les limitations avant d'ajouter le questionnaire
                if (limitations.LimiteQuestionnaires)
                {
                    MessageAnalyse += "La limite du nombre de Questionnaires : " + limitations.NombreQuestionnaires + " est atteinte.";
                    File.Delete(physicalPath);
                    EventFinImport.Set();
                    FinTraitement = true;
                    return;
                }

                Questionnaire questionnaire      = Questionnaire.FillFromXML(dt.Rows[0]);
                int           oldQuestionnaireID = questionnaire.QuestionnaireID;
                string        oldCodeAcces       = questionnaire.CodeAcces.ToString();

                questionnaire.MembreGUID   = MemberInfoData.MembreGUID;
                questionnaire.DateCreation = DateTime.Now; // Modifier la date de creation a maintenant

                ArrayList codes     = QuestionnaireDAL.GetCodeAccessAll();
                string    codeAcces = Tools.CalculCodeAcces(MemberInfoData.MembreID, codes).ToString();
                questionnaire.CodeAcces = int.Parse(codeAcces);

                int status = Questionnaire.Create(questionnaire);
                if (status == 1)
                {
                    MessageAnalyse += "Questionnaire : " + questionnaire.Description + " créé correctement.<br/>";
                    limitations.AjouterQuestionnaire();
                }
                else if (status == 2)
                {
                    MessageAnalyse += "Le Questionnaire : " + questionnaire.Description + " existe déjà.<br>";
                    File.Delete(physicalPath);
                    EventFinImport.Set();
                    FinTraitement = true;
                    return;
                }
                else
                {
                    MessageAnalyse += "Erreur sur la création du Questionnaire : " + questionnaire.Description + " <br/>";
                    File.Delete(physicalPath);
                    EventFinImport.Set();
                    FinTraitement = true;
                    return;
                }

                //
                // Tagger les Objets du Questionnaire avec le nouvel ID
                //
                int    newQuestionnaireID = questionnaire.QuestionnaireID;
                string newCodeAcces       = codeAcces;

                // Questions
                TaggerObjet(ref dataSet, "QQuestion", "QuestionnaireID", oldQuestionnaireID.ToString(), newQuestionnaireID.ToString());

                // Interviewe
                TaggerObjet(ref dataSet, "Personne", "QuestionnaireID", oldQuestionnaireID.ToString(), newQuestionnaireID.ToString());
                TaggerObjet(ref dataSet, "Personne", "PersonneCode", oldCodeAcces, newCodeAcces);

                // Votes
                TaggerObjet(ref dataSet, "Vote", "QuestionnaireID", oldQuestionnaireID.ToString(), newQuestionnaireID.ToString());

                // Score
                TaggerObjet(ref dataSet, "Score", "ScoreQuestionnaireID", oldQuestionnaireID.ToString(), newQuestionnaireID.ToString());
            }
            if (dt.TableName.Contains("QQuestion"))
            {
                // On passe aux Questions
                break;
            }
        }

        //
        // Creer les Questions
        //
        int nbQuestions = 0;

        foreach (DataTable dt in dataSet.Tables)
        {
            if (dt.TableName.Contains("QQuestion"))
            {
                // Tester les limitations avant d'ajouter la question
                if (limitations.LimiteQuestions)
                {
                    MessageAnalyse += "La limite du nombre de Questions : " + limitations.NombreQuestions + " est atteinte.";
                    File.Delete(physicalPath);
                    EventFinImport.Set();
                    FinTraitement = true;
                    return;
                }

                PollQuestion question      = PollQuestion.FillFromXML(dt.Rows[0]);
                string       oldQuestionID = question.PollQuestionId.ToString();
                question.MembreGUID = MemberInfoData.MembreGUID;
                int status = PollQuestion.Create(question);
                if (status != 0)
                {
                    MessageAnalyse += "Erreur à la création de la Question : " + question.Question + "<br/>";
                    File.Delete(physicalPath);
                    EventFinImport.Set();
                    FinTraitement = true;
                    return;
                }
                else
                {
                    nbQuestions += 1;
                    limitations.AjouterQuestion();
                }

                //
                // Tagger les Objets de la Question avec le nouvel ID
                //
                string newQuestionID = question.PollQuestionId.ToString();

                // Reponse
                TaggerObjet(ref dataSet, "Reponse", "PollQuestionId", oldQuestionID, newQuestionID);

                // Votes
                TaggerObjet(ref dataSet, "Vote", "PollQuestionId", oldQuestionID, newQuestionID);
            }
            if (dt.TableName.Contains("Reponse"))
            {
                // On passe aux Reponses
                break;
            }
        }
        MessageAnalyse += "Question créées : " + nbQuestions.ToString() + "<br/>";

        int nbReponses = 0;

        foreach (DataTable dt in dataSet.Tables)
        {
            if (dt.TableName.Contains("Reponse"))
            {
                PollAnswer reponse         = PollAnswer.FillFromXML(dt.Rows[0]);
                string     oldPollAnswerID = reponse.PollAnswerId.ToString();
                int        status          = PollAnswer.Create(reponse);
                if (status == 0)
                {
                    nbReponses += 1;
                }
                else
                {
                    MessageAnalyse += "Erreur à la création de la réponse : " + reponse.Answer;
                    File.Delete(physicalPath);
                    EventFinImport.Set();
                    FinTraitement = true;
                    return;
                }

                //
                // Tagger les Objets de la Reponse avec le nouvel ID
                //
                string newPollAnswerID = reponse.PollAnswerId.ToString();

                // Votes
                TaggerObjet(ref dataSet, "Vote", "PollAnswerId", oldPollAnswerID, newPollAnswerID);
            }
            if (dt.TableName.Contains("Personne"))
            {
                break;
            }
        }
        MessageAnalyse += "Réponses créés : " + nbReponses.ToString() + "<br/>";

        int nbInterviewes = 0;

        if (CheckBoxImportInterviewes.Checked)
        {
            foreach (DataTable dt in dataSet.Tables)
            {
                if (dt.TableName.Contains("Personne"))
                {
                    string   message         = "";
                    Personne personne        = Personne.FillFromXML(dt.Rows[0]);
                    string   oldPersonneGUID = personne.PersonneGUID.ToString();

                    // Trouver si l'utilisateur de ce questionnaire est limite
                    if (limitations.LimitesInterviewes)
                    {
                        MessageAnalyse += "La limite du nombre d'Interviewés : " + limitations.NombreInterviewes + " est atteinte.";
                        File.Delete(physicalPath);
                        EventFinImport.Set();
                        FinTraitement = true;
                        return;
                    }

                    int retCode = Personne.Create(personne, true, ref message);
                    if (retCode == 1)
                    {
                        nbInterviewes += 1;
                        limitations.AjouterInterviewes(1);
                    }
                    else
                    {
                        MessageAnalyse += message;
                        File.Delete(physicalPath);
                        EventFinImport.Set();
                        FinTraitement = true;
                        return;
                    }

                    //
                    // Tagger les Objets de la Reponse avec le nouvel ID
                    //
                    string newPersonneGUID = personne.PersonneGUID.ToString();

                    // Votes
                    TaggerObjet(ref dataSet, "Vote", "UserGUID", oldPersonneGUID, newPersonneGUID);
                }
                if (dt.TableName.Contains("Vote"))
                {
                    break;
                }
            }
        }
        MessageAnalyse += "Interviewés créés : " + nbInterviewes.ToString() + "<br/>";

        int nbVotes = 0;

        if (CheckBoxImportVotes.Checked)
        {
            foreach (DataTable dt in dataSet.Tables)
            {
                if (dt.TableName.Contains("Vote"))
                {
                    PollVote vote = PollVote.FillFromXML(dt.Rows[0]);

                    int status = PollVote.Create(vote);
                    if (status == 2)
                    {
                        MessageAnalyse += "Vote existe déjà";
                        File.Delete(physicalPath);
                        EventFinImport.Set();
                        FinTraitement = true;
                        return;
                    }
                    else
                    {
                        nbVotes += 1;
                    }
                }
                if (dt.TableName.Contains("Score"))
                {
                    break;
                }
            }

            if (limitations.LimitesReponses)
            {
                MessageAnalyse += "La limite du nombre de Réponses : " + limitations.NombreReponses + " est atteinte.";
                File.Delete(physicalPath);
                EventFinImport.Set();
                FinTraitement = true;
                return;
            }
        }
        MessageAnalyse += "Votes créés : " + nbVotes.ToString() + "<br/>";

        int nbScore = 0;

        foreach (DataTable dt in dataSet.Tables)
        {
            if (dt.TableName.Contains("Score"))
            {
                Score score  = Score.FillFromXML(dt.Rows[0]);
                int   status = Score.Create(score);
                if (status != 1)
                {
                    MessageAnalyse += "Erreur à la création du Score .<br/>";
                }
                else
                {
                    nbScore += 1;
                }
            }
        }
        MessageAnalyse += "Score créés : " + nbScore.ToString() + "<br/>";

        if (CheckBoxImportServeurSmtp.Checked)
        {
            foreach (DataTable dt in dataSet.Tables)
            {
                if (dt.TableName.Contains("SmtpServeur"))
                {
                    SmtpServer smtp = SmtpServer.FillFromXML(dt.Rows[0]);
                    smtp.UserGUID = MemberInfoData.MembreGUID;
                    int status = SmtpServer.Create(smtp);
                    if (status == 2)
                    {
                        MessageAnalyse += "Smtp : " + smtp.Email + " existe déjà.<br/>";
                        File.Delete(physicalPath);
                        EventFinImport.Set();
                        FinTraitement = true;
                        return;
                    }
                    else
                    {
                        MessageAnalyse += "Smtp crée correctement : " + smtp.Email + "<br/>";
                    }
                }
            }
        }

        DateTime dateFinAnalyse  = DateTime.Now;
        TimeSpan tempsTraitement = dateFinAnalyse - dateDebutAnalyse;

        MessageAnalyse += "- Taille du fichier : " + Tools.FileSizeFormat(DocumentNom.PostedFile.ContentLength, "N") + "<br/>";
        MessageAnalyse += "- Temps d'import : " + Tools.FormatTimeSpan(tempsTraitement) + "<br/>";

        File.Delete(physicalPath);
        EventFinImport.Set();
        FinTraitement = true;
    }
    protected void ButtonValiderQuestionnaire_Click(object sender, EventArgs e)
    {
        if (Request.QueryString["valider"] != null)
        {
            if (Request.QueryString["valider"].ToString() == "2")
            {
                Page.Response.Redirect("~/Poll/Termine.Aspx", true);
            }
        }

        if (SessionState.QuestionsEnCours.Count <= 0)
        {
            ValidationMessage.Text   += "Pas de questions en cours.";
            ValidationMessage.Visible = true;
            return;
        }

        if (SessionState.VotesEnCours.Count <= 0)
        {
            // L'interviewe a deja clique sur le bouton
            if (ValidationMessage.Text == "Pas de réponses en cours.")
            {
                Page.Response.Redirect("~/Poll/Termine.Aspx", true);
            }

            ValidationMessage.Text   += "Pas de réponses en cours.";
            ValidationMessage.Visible = true;
            return;
        }

        int statusGlobal = 0;

        Session["_VotesEnCoursCount"] = SessionState.VotesEnCours.Count;
        foreach (PollQuestion question in SessionState.QuestionsEnCours)
        {
            PollAnswerCollection answers = PollAnswerCollection.GetByPollQuestionID(question.PollQuestionId);
            foreach (PollAnswer answer in answers)
            {
                PollVoteCollection pvc = SessionState.VotesEnCours.FindByAnswerID(answer.PollAnswerId);
                if (pvc.Count > 0)
                {
                    foreach (PollVote vote in pvc)
                    {
                        if (HttpContext.Current.User.Identity.IsAuthenticated == false)
                        {
                            Limitation limitation = new Limitation(SessionState.Questionnaire.MembreGUID);
                            if (limitation.LimitesReponses)
                            {
                                Context.Response.Redirect(Tools.PageErreurPath + "Désolé mais le nombre de réponses pour ce questionnaire est atteinte.", true);
                            }

                            int status = PollVote.Create(vote);
                            if (status != 1)
                            {
                                statusGlobal += 1;
                            }
                        }
                        SessionState.Votes.Add(vote);
                        SessionState.VotesEnCours.Remove(vote);
                    }
                }
            }
        }

        if (statusGlobal != 0)
        {
            ValidationMessage.Text   += "Erreur à la création des votes : " + statusGlobal.ToString();
            ValidationMessage.Visible = true;
            return;
        }

        if (Request.QueryString["fin"] != null)
        {
            Page.Response.Redirect("~/Poll/QuestionnaireEnCours.aspx?valider=2", true);
        }
        Page.Response.Redirect("~/Poll/QuestionnaireEnCours.aspx?valider=1", true);
    }
示例#20
0
 public PollVote Add(PollVote pollVote)
 {
     return _context.PollVote.Add(pollVote);
 }
示例#21
0
 public void Delete(PollVote pollVote)
 {
     _context.PollVote.Remove(pollVote);
 }
示例#22
0
 public void Delete(PollVote pollVote)
 {
     _context.PollVote.Remove(pollVote);
 }
示例#23
0
 public Task <bool> CreateVoteOnPollAsync(PollVote vote)
 {
     _dbContext.PollVotes.Add(vote);
     return(CommitedResultIsSuccessfulAsync());
 }
示例#24
0
 public async Task <PollVote> AddPollVoteAsync(PollVote pv)
 {
     return(await _repo.AddPollVoteAsync(pv));
 }