#12 narration profile POST API bug fix and validations
This commit is contained in:
parent
636db99ea2
commit
7ec0f91da5
@ -8,6 +8,13 @@ namespace RMuseum.Models.GanjoorAudio.ViewModels
|
||||
/// </summary>
|
||||
public class UserNarrationProfileViewModel
|
||||
{
|
||||
/// <summary>
|
||||
/// parameterless constructor
|
||||
/// </summary>
|
||||
public UserNarrationProfileViewModel()
|
||||
{
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// constructor
|
||||
/// </summary>
|
||||
@ -28,16 +35,25 @@ namespace RMuseum.Models.GanjoorAudio.ViewModels
|
||||
/// <summary>
|
||||
/// Id
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Do not fill it in POST api
|
||||
/// </remarks>
|
||||
public Guid Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// User
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Do not fill it in POST api
|
||||
/// </remarks>
|
||||
public PublicRAppUser User { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// UserId
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Do not fill it in POST api
|
||||
/// </remarks>
|
||||
public Guid UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
|
||||
@ -2139,6 +2139,11 @@
|
||||
UserNarrationProfile View Model
|
||||
</summary>
|
||||
</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)">
|
||||
<summary>
|
||||
constructor
|
||||
@ -2149,16 +2154,25 @@
|
||||
<summary>
|
||||
Id
|
||||
</summary>
|
||||
<remarks>
|
||||
Do not fill it in POST api
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.User">
|
||||
<summary>
|
||||
User
|
||||
</summary>
|
||||
<remarks>
|
||||
Do not fill it in POST api
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.UserId">
|
||||
<summary>
|
||||
UserId
|
||||
</summary>
|
||||
<remarks>
|
||||
Do not fill it in POST api
|
||||
</remarks>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.GanjoorAudio.ViewModels.UserNarrationProfileViewModel.FileSuffixWithoutDash">
|
||||
<summary>
|
||||
@ -4564,6 +4578,30 @@
|
||||
equaivalnet for persian characters
|
||||
</summary>
|
||||
</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">
|
||||
<summary>
|
||||
manipulating picture files
|
||||
|
||||
@ -693,13 +693,51 @@ namespace RMuseum.Services.Implementation
|
||||
var p = new UserNarrationProfile()
|
||||
{
|
||||
UserId = profile.UserId,
|
||||
ArtistName = profile.ArtistName,
|
||||
ArtistUrl = profile.ArtistUrl,
|
||||
AudioSrc = profile.AudioSrc,
|
||||
AudioSrcUrl = profile.AudioSrcUrl,
|
||||
FileSuffixWithoutDash = profile.FileSuffixWithoutDash,
|
||||
ArtistName = profile.ArtistName.Trim(),
|
||||
ArtistUrl = profile.ArtistUrl.Trim(),
|
||||
AudioSrc = profile.AudioSrc.Trim(),
|
||||
AudioSrcUrl = profile.AudioSrcUrl.Trim(),
|
||||
FileSuffixWithoutDash = profile.FileSuffixWithoutDash.Trim(),
|
||||
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.SaveChangesAsync();
|
||||
|
||||
34
RMuseum/Services/Implementation/LanguageUtils.cs
Normal file
34
RMuseum/Services/Implementation/LanguageUtils.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user