#12 narration profile POST API bug fix and validations

This commit is contained in:
Hamid Reza Mohammadi 2020-10-13 20:37:00 +03:30
parent 636db99ea2
commit 7ec0f91da5
4 changed files with 131 additions and 5 deletions

View File

@ -8,6 +8,13 @@ namespace RMuseum.Models.GanjoorAudio.ViewModels
/// </summary> /// </summary>
public class UserNarrationProfileViewModel public class UserNarrationProfileViewModel
{ {
/// <summary>
/// parameterless constructor
/// </summary>
public UserNarrationProfileViewModel()
{
}
/// <summary> /// <summary>
/// constructor /// constructor
/// </summary> /// </summary>
@ -28,16 +35,25 @@ namespace RMuseum.Models.GanjoorAudio.ViewModels
/// <summary> /// <summary>
/// Id /// Id
/// </summary> /// </summary>
/// <remarks>
/// Do not fill it in POST api
/// </remarks>
public Guid Id { get; set; } public Guid Id { get; set; }
/// <summary> /// <summary>
/// User /// User
/// </summary> /// </summary>
/// <remarks>
/// Do not fill it in POST api
/// </remarks>
public PublicRAppUser User { get; set; } public PublicRAppUser User { get; set; }
/// <summary> /// <summary>
/// UserId /// UserId
/// </summary> /// </summary>
/// <remarks>
/// Do not fill it in POST api
/// </remarks>
public Guid UserId { get; set; } public Guid UserId { get; set; }
/// <summary> /// <summary>

View File

@ -2139,6 +2139,11 @@
UserNarrationProfile View Model UserNarrationProfile View Model
</summary> </summary>
</member> </member>
<member name="M:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.#ctor">
<summary>
parameterless constructor
</summary>
</member>
<member name="M:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.#ctor(RMuseum.Models.GanjoorAudio.UserNarrationProfile)"> <member name="M:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.#ctor(RMuseum.Models.GanjoorAudio.UserNarrationProfile)">
<summary> <summary>
constructor constructor
@ -2149,16 +2154,25 @@
<summary> <summary>
Id Id
</summary> </summary>
<remarks>
Do not fill it in POST api
</remarks>
</member> </member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.User"> <member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.User">
<summary> <summary>
User User
</summary> </summary>
<remarks>
Do not fill it in POST api
</remarks>
</member> </member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.UserId"> <member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.UserId">
<summary> <summary>
UserId UserId
</summary> </summary>
<remarks>
Do not fill it in POST api
</remarks>
</member> </member>
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.FileSuffixWithoutDash"> <member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.FileSuffixWithoutDash">
<summary> <summary>
@ -4564,6 +4578,30 @@
equaivalnet for persian characters equaivalnet for persian characters
</summary> </summary>
</member> </member>
<member name="T:RMuseum.Services.Implementation.LanguageUtils">
<summary>
Language Utilitis
</summary>
</member>
<member name="F:RMuseum.Services.Implementation.LanguageUtils.PersianAlphabet">
<summary>
Persian Alphabet
</summary>
</member>
<member name="F:RMuseum.Services.Implementation.LanguageUtils.EnglishLowerCaseAlphabet">
<summary>
English Alphabet
</summary>
</member>
<member name="M:RMuseum.Services.Implementation.LanguageUtils.ContainsOnlySpecificCharacters(System.String,System.String,System.String)">
<summary>
Contains Only Specific Characters
</summary>
<param name="input"></param>
<param name="specfics"></param>
<param name="additional"></param>
<returns></returns>
</member>
<member name="T:RMuseum.Services.Implementation.PictureFileService"> <member name="T:RMuseum.Services.Implementation.PictureFileService">
<summary> <summary>
manipulating picture files manipulating picture files

View File

@ -693,13 +693,51 @@ namespace RMuseum.Services.Implementation
var p = new UserNarrationProfile() var p = new UserNarrationProfile()
{ {
UserId = profile.UserId, UserId = profile.UserId,
ArtistName = profile.ArtistName, ArtistName = profile.ArtistName.Trim(),
ArtistUrl = profile.ArtistUrl, ArtistUrl = profile.ArtistUrl.Trim(),
AudioSrc = profile.AudioSrc, AudioSrc = profile.AudioSrc.Trim(),
AudioSrcUrl = profile.AudioSrcUrl, AudioSrcUrl = profile.AudioSrcUrl.Trim(),
FileSuffixWithoutDash = profile.FileSuffixWithoutDash, FileSuffixWithoutDash = profile.FileSuffixWithoutDash.Trim(),
IsDefault = profile.IsDefault IsDefault = profile.IsDefault
}; };
if(p.ArtistName.Length < 3)
{
return new RServiceResult<UserNarrationProfileViewModel>(null, "نام خوانشگر باید حداقل شامل سه نویسه باشد.");
}
if (p.FileSuffixWithoutDash.Length < 2)
{
return new RServiceResult<UserNarrationProfileViewModel>(null, "طول پسوند قابل پذیرش حداقل دو کاراکتر است.");
}
if (p.FileSuffixWithoutDash.Length > 4)
{
return new RServiceResult<UserNarrationProfileViewModel>(null, "طول پسوند قابل پذیرش حداکثر چهار کاراکتر است.");
}
if (!LanguageUtils.ContainsOnlySpecificCharacters(p.ArtistName, LanguageUtils.PersianAlphabet, " "))
{
return new RServiceResult<UserNarrationProfileViewModel>(null, "نام فقط باید شامل حروف فارسی و فاصله باشد.");
}
if (
!LanguageUtils.ContainsOnlySpecificCharacters(p.ArtistUrl, LanguageUtils.EnglishLowerCaseAlphabet, LanguageUtils.EnglishLowerCaseAlphabet.ToUpper() + @":/.")
||
!LanguageUtils.ContainsOnlySpecificCharacters(p.AudioSrcUrl, LanguageUtils.EnglishLowerCaseAlphabet, LanguageUtils.EnglishLowerCaseAlphabet.ToUpper() + @":/.")
)
{
return new RServiceResult<UserNarrationProfileViewModel>(null, "نشانیهای وب نادرستند.");
}
if (!LanguageUtils.ContainsOnlySpecificCharacters(p.FileSuffixWithoutDash, LanguageUtils.EnglishLowerCaseAlphabet))
{
return new RServiceResult<UserNarrationProfileViewModel>(null, "پسوند فقط می‌تواند از حروف کوچک انگلیسی تشکیل شود.");
}
await _context.UserNarrationProfiles.AddAsync(p); await _context.UserNarrationProfiles.AddAsync(p);
await _context.SaveChangesAsync(); await _context.SaveChangesAsync();

View File

@ -0,0 +1,34 @@
namespace RMuseum.Services.Implementation
{
/// <summary>
/// Language Utilitis
/// </summary>
public static class LanguageUtils
{
/// <summary>
/// Persian Alphabet
/// </summary>
public const string PersianAlphabet = "آابپتثجچحخدذرزژسشصضطظعغفقکگلمنوهیئؤ";
/// <summary>
/// English Alphabet
/// </summary>
public const string EnglishLowerCaseAlphabet = "abcdefghijklmnopqrstuvwxyz";
/// <summary>
/// Contains Only Specific Characters
/// </summary>
/// <param name="input"></param>
/// <param name="specfics"></param>
/// <param name="additional"></param>
/// <returns></returns>
public static bool ContainsOnlySpecificCharacters(string input, string specfics, string additional= "")
{
string all = specfics + additional;
foreach (char c in input)
if (all.IndexOf(c) == -1)
return false;
return true;
}
}
}