From ac771969971ca979d43edd08a5474d3832197e06 Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Wed, 11 Nov 2020 15:57:05 +0330 Subject: [PATCH] validating poem narraions while PUTing them --- RMuseum/RMuseum.xml | 7 +++ .../Implementation/AudioNarrationService.cs | 51 ++++++++++++++++++- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index d321be38..3231b755 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -4799,6 +4799,13 @@ narration id + + + validate PoemNarrationViewModel + + + + updates metadata for narration diff --git a/RMuseum/Services/Implementation/AudioNarrationService.cs b/RMuseum/Services/Implementation/AudioNarrationService.cs index 9edbeb85..bd11eece 100644 --- a/RMuseum/Services/Implementation/AudioNarrationService.cs +++ b/RMuseum/Services/Implementation/AudioNarrationService.cs @@ -136,6 +136,40 @@ namespace RMuseum.Services.Implementation } } + /// + /// validate PoemNarrationViewModel + /// + /// + /// + private static string GetPoemNarrationValidationError(PoemNarrationViewModel p) + { + if (p.AudioArtist.Length < 3) + { + return "نام خوانشگر باید حداقل شامل سه نویسه باشد."; + } + + string s = LanguageUtils.GetFirstNotMatchingCharacter(p.AudioArtist, LanguageUtils.PersianAlphabet, " ‌"); + if (s != "") + { + return $"نام فقط باید شامل حروف فارسی و فاصله باشد. اولین حرف غیرمجاز = {s}"; + } + + s = LanguageUtils.GetFirstNotMatchingCharacter(p.AudioArtistUrl, LanguageUtils.EnglishLowerCaseAlphabet, LanguageUtils.EnglishLowerCaseAlphabet.ToUpper() + @":/._-"); + + if (s != "") + { + return $"نشانی وب خوانشگر شامل حروف غیر مجاز است. اولین حرف غیرمجاز = {s}"; + } + + s = LanguageUtils.GetFirstNotMatchingCharacter(p.AudioSrcUrl, LanguageUtils.EnglishLowerCaseAlphabet, LanguageUtils.EnglishLowerCaseAlphabet.ToUpper() + @":/._-"); + if (s != "") + { + return $"نشانی وب منبع شامل حروف غیر مجاز است. اولین حرف غیرمجاز = {s}"; + } + + return ""; + } + /// /// updates metadata for narration /// @@ -146,6 +180,19 @@ namespace RMuseum.Services.Implementation { try { + + metadata.AudioTitle = metadata.AudioTitle.Trim(); + metadata.AudioArtist = metadata.AudioArtist.Trim(); + metadata.AudioArtistUrl = metadata.AudioArtistUrl.Trim(); + metadata.AudioSrc = metadata.AudioSrc.Trim(); + metadata.AudioSrcUrl = metadata.AudioSrcUrl.Trim(); + + string err = GetPoemNarrationValidationError(metadata); + if(!string.IsNullOrEmpty(err)) + { + return new RServiceResult(null, err); + } + PoemNarration narration = await _context.AudioFiles.Include(a => a.Owner).Where(a => a.Id == id).SingleOrDefaultAsync(); if(narration == null) return new RServiceResult(null, "404"); @@ -902,7 +949,7 @@ namespace RMuseum.Services.Implementation string s = LanguageUtils.GetFirstNotMatchingCharacter(p.ArtistName, LanguageUtils.PersianAlphabet, " ‌"); if (s != "") { - return $"نام فقط باید شامل حروف فارسی و فاصله باشد. اولین حرف غیرمجاز = {s}"; + return $"نام خوانشگر فقط باید شامل حروف فارسی و فاصله باشد. اولین حرف غیرمجاز = {s}"; } s = LanguageUtils.GetFirstNotMatchingCharacter(p.ArtistUrl, LanguageUtils.EnglishLowerCaseAlphabet, LanguageUtils.EnglishLowerCaseAlphabet.ToUpper() + @":/._-"); @@ -929,6 +976,8 @@ namespace RMuseum.Services.Implementation } + + /// /// Add a narration profile ///