Exemplo n.º 1
0
        private static SlackErrorsResponse ValidateProposal(DialogSubmissionPayload dsp)
        {
            var response = new SlackErrorsResponse();

            if (!Regex.IsMatch(dsp.GetValue("url"), @"^(https?://|\\\\)"))
            {
                response.AddError("url", @"L'URL doit commencer par http://, https:// ou \\");
            }

            return(response);
        }
Exemplo n.º 2
0
        private static async Task <SlackErrorsResponse> ValidatePlan(IBinder binder, DialogSubmissionPayload dsp)
        {
            var response = new SlackErrorsResponse();
            var now      = DateTime.Now;

            if (!Utils.TryParseDate(dsp.GetValue("date"), out var date))
            {
                response.AddError("date", "Le format de date n'est pas valide.");
            }
            else if (date < now.Date)
            {
                response.AddError("date", "La date ne peut pas être dans le passé.");
            }
            else if (now.TimeOfDay > TimeSpan.Parse("12:00") && date == now.Date)
            {
                response.AddError("date", "Comme il est passé midi, la date ne peut pas être aujourd'hui.");
            }

            if (!response.Valid)
            {
                return(response);
            }

            var plansTable = await binder.GetTable("plans");

            var query = new TableQuery <Plan>().Where(TableQuery.CombineFilters(
                                                          TableQuery.GenerateFilterCondition("PartitionKey", "eq", dsp.PartitionKey),
                                                          "and",
                                                          TableQuery.GenerateFilterConditionForDate("Date", "eq", date.AddHours(12))
                                                          ));
            var plans = await plansTable.ExecuteQueryAsync(query);

            if (plans.Any())
            {
                response.AddError("date", "Un Lunch & Watch est déjà prévu pour cette date.");
            }

            if (date == now.Date)
            {
                if (string.IsNullOrWhiteSpace(dsp.GetValue("owner")))
                {
                    response.AddError("owner", "Comme la présentation est prévue aujourd'hui, un responsable doit être désigné.");
                }
                if (string.IsNullOrWhiteSpace(dsp.GetValue("video")))
                {
                    response.AddError("video", "Comme la présentation est prévue aujourd'hui, un vidéo doit être choisi.");
                }
            }

            return(response);
        }
Exemplo n.º 3
0
        private static SlackErrorsResponse ValidateVotes(DialogSubmissionPayload dsp)
        {
            var response = new SlackErrorsResponse();

            var votes = new HashSet <string> {
                dsp.Submission["proposal1"]
            };

            var proposal2 = dsp.Submission["proposal2"];

            if (!string.IsNullOrWhiteSpace(proposal2) && !votes.Add(proposal2))
            {
                response.AddError("proposal2", "Vous ne pouvez-pas voter deux fois pour le même vidéo.");
            }

            var proposal3 = dsp.Submission["proposal3"];

            if (!string.IsNullOrWhiteSpace(proposal3) && !votes.Add(proposal3))
            {
                response.AddError("proposal3", "Vous ne pouvez-pas voter deux fois pour le même vidéo.");
            }

            return(response);
        }