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); }
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); }
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); }