#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>
|
/// </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>
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
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