#203 changing db structure
This commit is contained in:
parent
c757270c1d
commit
175092aff9
@ -4,6 +4,8 @@ using RMuseum.Models.Auth.Memory;
|
||||
using RMuseum.Models.Ganjoor;
|
||||
using RMuseum.Models.Ganjoor.ViewModels;
|
||||
using RMuseum.Services;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
@ -59,7 +61,7 @@ namespace RMuseum.Controllers
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
public async Task<IActionResult> AddLanguageAsync([FromBody] GanjoorLanguage lang)
|
||||
{
|
||||
var res = await _translationService.AddLanguageAsync(lang.Name, lang.RightToLeft);
|
||||
var res = await _translationService.AddLanguageAsync(lang);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
@ -148,7 +150,8 @@ namespace RMuseum.Controllers
|
||||
[ProducesResponseType((int)HttpStatusCode.Unauthorized)]
|
||||
public async Task<IActionResult> AddOrUpdatePoemTranslation([FromBody] GanjoorPoemTranslationViewModel translation)
|
||||
{
|
||||
var res = await _translationService.AddOrUpdatePoemTranslation(translation);
|
||||
Guid userId = new Guid(User.Claims.FirstOrDefault(c => c.Type == "UserId").Value);
|
||||
var res = await _translationService.AddPoemTranslation(userId, translation);
|
||||
if (!string.IsNullOrEmpty(res.ExceptionString))
|
||||
return BadRequest(res.ExceptionString);
|
||||
return Ok(res.Result);
|
||||
|
||||
@ -120,19 +120,11 @@ namespace RMuseum.DbContext
|
||||
.HasIndex(m => m.Name)
|
||||
.IsUnique();
|
||||
|
||||
builder.Entity<GanjoorPoemTranslation>()
|
||||
.HasIndex(t => new { t.LanguageId, t.PoemId })
|
||||
.IsUnique();
|
||||
|
||||
builder.Entity<GanjoorPoemTranslation>()
|
||||
.HasOne(e => e.Language)
|
||||
.WithMany()
|
||||
.OnDelete(DeleteBehavior.NoAction);
|
||||
|
||||
builder.Entity<GanjoorVerseTranslation>()
|
||||
.HasIndex(t => new { t.LanguageId, t.VerseId })
|
||||
.IsUnique();
|
||||
|
||||
|
||||
//Index set suggested by SQL Server Tuning Wizard -- end
|
||||
|
||||
@ -347,10 +339,6 @@ namespace RMuseum.DbContext
|
||||
/// poem translations
|
||||
/// </summary>
|
||||
public DbSet<GanjoorPoemTranslation> PoemTranslations { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// verse translations
|
||||
/// </summary>
|
||||
public DbSet<GanjoorVerseTranslation> VerseTranslations { get; set; }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
3018
RMuseum/Migrations/20210911151701_Translations.Designer.cs
generated
3018
RMuseum/Migrations/20210911151701_Translations.Designer.cs
generated
File diff suppressed because it is too large
Load Diff
@ -1,119 +0,0 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace RMuseum.Migrations
|
||||
{
|
||||
public partial class Translations : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.CreateTable(
|
||||
name: "GanjoorLanguages",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "int", nullable: false)
|
||||
.Annotation("SqlServer:Identity", "1, 1"),
|
||||
Name = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
||||
RightToLeft = table.Column<bool>(type: "bit", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_GanjoorLanguages", x => x.Id);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "PoemTranslations",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "int", nullable: false)
|
||||
.Annotation("SqlServer:Identity", "1, 1"),
|
||||
LanguageId = table.Column<int>(type: "int", nullable: false),
|
||||
PoemId = table.Column<int>(type: "int", nullable: false),
|
||||
Title = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||
Published = table.Column<bool>(type: "bit", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_PoemTranslations", x => x.Id);
|
||||
table.ForeignKey(
|
||||
name: "FK_PoemTranslations_GanjoorPoems_PoemId",
|
||||
column: x => x.PoemId,
|
||||
principalTable: "GanjoorPoems",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_PoemTranslations_PoemTranslations_LanguageId",
|
||||
column: x => x.LanguageId,
|
||||
principalTable: "PoemTranslations",
|
||||
principalColumn: "Id");
|
||||
});
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "VerseTranslations",
|
||||
columns: table => new
|
||||
{
|
||||
Id = table.Column<int>(type: "int", nullable: false)
|
||||
.Annotation("SqlServer:Identity", "1, 1"),
|
||||
VerseId = table.Column<int>(type: "int", nullable: false),
|
||||
LanguageId = table.Column<int>(type: "int", nullable: false),
|
||||
TText = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_VerseTranslations", x => x.Id);
|
||||
table.ForeignKey(
|
||||
name: "FK_VerseTranslations_GanjoorLanguages_LanguageId",
|
||||
column: x => x.LanguageId,
|
||||
principalTable: "GanjoorLanguages",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
table.ForeignKey(
|
||||
name: "FK_VerseTranslations_GanjoorVerses_VerseId",
|
||||
column: x => x.VerseId,
|
||||
principalTable: "GanjoorVerses",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
});
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_GanjoorLanguages_Name",
|
||||
table: "GanjoorLanguages",
|
||||
column: "Name",
|
||||
unique: true,
|
||||
filter: "[Name] IS NOT NULL");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_PoemTranslations_LanguageId_PoemId",
|
||||
table: "PoemTranslations",
|
||||
columns: new[] { "LanguageId", "PoemId" },
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_PoemTranslations_PoemId",
|
||||
table: "PoemTranslations",
|
||||
column: "PoemId");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_VerseTranslations_LanguageId_VerseId",
|
||||
table: "VerseTranslations",
|
||||
columns: new[] { "LanguageId", "VerseId" },
|
||||
unique: true);
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_VerseTranslations_VerseId",
|
||||
table: "VerseTranslations",
|
||||
column: "VerseId");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "PoemTranslations");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "VerseTranslations");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "GanjoorLanguages");
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@ -15,9 +15,24 @@
|
||||
/// </summary>
|
||||
public string Name { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// code
|
||||
/// </summary>
|
||||
public string Code { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// native name
|
||||
/// </summary>
|
||||
public string NativeName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// is right to left
|
||||
/// </summary>
|
||||
public bool RightToLeft { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// description
|
||||
/// </summary>
|
||||
public string Description { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,8 @@
|
||||
namespace RMuseum.Models.Ganjoor
|
||||
using RSecurityBackend.Models.Auth.Db;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace RMuseum.Models.Ganjoor
|
||||
{
|
||||
/// <summary>
|
||||
/// poem translation
|
||||
@ -35,9 +39,29 @@
|
||||
/// </summary>
|
||||
public string Title { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// verses
|
||||
/// </summary>
|
||||
public List<GanjoorVerseTranslation> Verses { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// published
|
||||
/// </summary>
|
||||
public bool Published { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// user id
|
||||
/// </summary>
|
||||
public Guid UserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// user
|
||||
/// </summary>
|
||||
public RAppUser User { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// date/time
|
||||
/// </summary>
|
||||
public DateTime DateTime { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,16 +20,6 @@
|
||||
/// </summary>
|
||||
public GanjoorVerse Verse { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// language
|
||||
/// </summary>
|
||||
public int LanguageId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// language
|
||||
/// </summary>
|
||||
public GanjoorLanguage Language { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// translated text
|
||||
/// </summary>
|
||||
|
||||
@ -19,6 +19,11 @@
|
||||
/// </summary>
|
||||
public string Title { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// published
|
||||
/// </summary>
|
||||
public bool Published { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// translated verses
|
||||
/// </summary>
|
||||
|
||||
@ -1895,11 +1895,6 @@
|
||||
poem translations
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.DbContext.RMuseumDbContext.VerseTranslations">
|
||||
<summary>
|
||||
verse translations
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Accounting.DonationExpenditure">
|
||||
<summary>
|
||||
donation expenditures
|
||||
@ -4573,11 +4568,26 @@
|
||||
name
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorLanguage.Code">
|
||||
<summary>
|
||||
code
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorLanguage.NativeName">
|
||||
<summary>
|
||||
native name
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorLanguage.RightToLeft">
|
||||
<summary>
|
||||
is right to left
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorLanguage.Description">
|
||||
<summary>
|
||||
description
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.GanjoorMetre">
|
||||
<summary>
|
||||
Poem prosodic Metre
|
||||
@ -5087,11 +5097,31 @@
|
||||
title translation
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorPoemTranslation.Verses">
|
||||
<summary>
|
||||
verses
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorPoemTranslation.Published">
|
||||
<summary>
|
||||
published
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorPoemTranslation.UserId">
|
||||
<summary>
|
||||
user id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorPoemTranslation.User">
|
||||
<summary>
|
||||
user
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorPoemTranslation.DateTime">
|
||||
<summary>
|
||||
date/time
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:RMuseum.Models.Ganjoor.GanjoorPoet">
|
||||
<summary>
|
||||
Ganjoor Poet
|
||||
@ -5232,16 +5262,6 @@
|
||||
verse
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorVerseTranslation.LanguageId">
|
||||
<summary>
|
||||
language
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorVerseTranslation.Language">
|
||||
<summary>
|
||||
language
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.GanjoorVerseTranslation.TText">
|
||||
<summary>
|
||||
translated text
|
||||
@ -6183,6 +6203,11 @@
|
||||
translated title
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoemTranslationViewModel.Published">
|
||||
<summary>
|
||||
published
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:RMuseum.Models.Ganjoor.ViewModels.GanjoorPoemTranslationViewModel.TranslatedVerses">
|
||||
<summary>
|
||||
translated verses
|
||||
@ -8421,12 +8446,11 @@
|
||||
translation service implementation
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorTranslationService.AddLanguageAsync(System.String,System.Boolean)">
|
||||
<member name="M:RMuseum.Services.IGanjoorTranslationService.AddLanguageAsync(RMuseum.Models.Ganjoor.GanjoorLanguage)">
|
||||
<summary>
|
||||
add language
|
||||
</summary>
|
||||
<param name="name"></param>
|
||||
<param name="rtl"></param>
|
||||
<param name="lang"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorTranslationService.UpdateLangaugeAsync(RMuseum.Models.Ganjoor.GanjoorLanguage)">
|
||||
@ -8456,11 +8480,12 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorTranslationService.AddOrUpdatePoemTranslation(RMuseum.Models.Ganjoor.ViewModels.GanjoorPoemTranslationViewModel)">
|
||||
<member name="M:RMuseum.Services.IGanjoorTranslationService.AddPoemTranslation(System.Guid,RMuseum.Models.Ganjoor.ViewModels.GanjoorPoemTranslationViewModel)">
|
||||
<summary>
|
||||
add or update poem translation
|
||||
</summary>
|
||||
<param name="translation"></param>
|
||||
<param name="userId"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.IGanjoorTranslationService.GetTranslationsAsync(System.Int32)">
|
||||
@ -10078,12 +10103,11 @@
|
||||
translation service implementation
|
||||
</summary>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorTranslationService.AddLanguageAsync(System.String,System.Boolean)">
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorTranslationService.AddLanguageAsync(RMuseum.Models.Ganjoor.GanjoorLanguage)">
|
||||
<summary>
|
||||
add language
|
||||
</summary>
|
||||
<param name="name"></param>
|
||||
<param name="rtl"></param>
|
||||
<param name="lang"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorTranslationService.UpdateLangaugeAsync(RMuseum.Models.Ganjoor.GanjoorLanguage)">
|
||||
@ -10113,10 +10137,11 @@
|
||||
</summary>
|
||||
<returns></returns>
|
||||
</member>
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorTranslationService.AddOrUpdatePoemTranslation(RMuseum.Models.Ganjoor.ViewModels.GanjoorPoemTranslationViewModel)">
|
||||
<member name="M:RMuseum.Services.Implementation.GanjoorTranslationService.AddPoemTranslation(System.Guid,RMuseum.Models.Ganjoor.ViewModels.GanjoorPoemTranslationViewModel)">
|
||||
<summary>
|
||||
add or update poem translation
|
||||
</summary>
|
||||
<param name="userId"></param>
|
||||
<param name="translation"></param>
|
||||
<returns></returns>
|
||||
</member>
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
using RMuseum.Models.Ganjoor;
|
||||
using RMuseum.Models.Ganjoor.ViewModels;
|
||||
using RSecurityBackend.Models.Generic;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace RMuseum.Services
|
||||
@ -13,10 +14,9 @@ namespace RMuseum.Services
|
||||
/// <summary>
|
||||
/// add language
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="rtl"></param>
|
||||
/// <param name="lang"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<GanjoorLanguage>> AddLanguageAsync(string name, bool rtl);
|
||||
Task<RServiceResult<GanjoorLanguage>> AddLanguageAsync(GanjoorLanguage lang);
|
||||
|
||||
|
||||
/// <summary>
|
||||
@ -52,8 +52,9 @@ namespace RMuseum.Services
|
||||
/// add or update poem translation
|
||||
/// </summary>
|
||||
/// <param name="translation"></param>
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
Task<RServiceResult<bool>> AddOrUpdatePoemTranslation(GanjoorPoemTranslationViewModel translation);
|
||||
Task<RServiceResult<bool>> AddPoemTranslation(Guid userId, GanjoorPoemTranslationViewModel translation);
|
||||
|
||||
/// <summary>
|
||||
/// get translations for a poem
|
||||
|
||||
@ -18,26 +18,20 @@ namespace RMuseum.Services.Implementation
|
||||
/// <summary>
|
||||
/// add language
|
||||
/// </summary>
|
||||
/// <param name="name"></param>
|
||||
/// <param name="rtl"></param>
|
||||
/// <param name="lang"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<GanjoorLanguage>> AddLanguageAsync(string name, bool rtl)
|
||||
public async Task<RServiceResult<GanjoorLanguage>> AddLanguageAsync(GanjoorLanguage lang)
|
||||
{
|
||||
var existing = await _context.GanjoorLanguages.Where(l => l.Name == name).FirstOrDefaultAsync();
|
||||
var existing = await _context.GanjoorLanguages.Where(l => l.Name == lang.Name || l.Code == lang.Code).FirstOrDefaultAsync();
|
||||
if (existing != null)
|
||||
return new RServiceResult<GanjoorLanguage>(null, "نام تکراری است.");
|
||||
return new RServiceResult<GanjoorLanguage>(null, "اطلاعات تکراری است.");
|
||||
try
|
||||
{
|
||||
var lang = new GanjoorLanguage()
|
||||
{
|
||||
Name = name,
|
||||
RightToLeft = rtl
|
||||
};
|
||||
_context.GanjoorLanguages.Add(lang);
|
||||
await _context.SaveChangesAsync();
|
||||
return new RServiceResult<GanjoorLanguage>(lang);
|
||||
}
|
||||
catch(Exception exp)
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<GanjoorLanguage>(null, exp.ToString());
|
||||
}
|
||||
@ -58,6 +52,9 @@ namespace RMuseum.Services.Implementation
|
||||
|
||||
lang.Name = updated.Name;
|
||||
lang.RightToLeft = updated.RightToLeft;
|
||||
lang.Code = updated.Code;
|
||||
lang.NativeName = updated.NativeName;
|
||||
lang.Description = updated.Description;
|
||||
_context.Update(lang);
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
@ -129,57 +126,53 @@ namespace RMuseum.Services.Implementation
|
||||
/// <summary>
|
||||
/// add or update poem translation
|
||||
/// </summary>
|
||||
/// <param name="userId"></param>
|
||||
/// <param name="translation"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<RServiceResult<bool>> AddOrUpdatePoemTranslation(GanjoorPoemTranslationViewModel translation)
|
||||
public async Task<RServiceResult<bool>> AddPoemTranslation(Guid userId, GanjoorPoemTranslationViewModel translation)
|
||||
{
|
||||
try
|
||||
{
|
||||
var dbTranslation = await _context.PoemTranslations.Where(t => t.LanguageId == translation.LanguageId && t.PoemId == translation.PoemId).SingleOrDefaultAsync();
|
||||
if(dbTranslation == null)
|
||||
if (translation.Published)
|
||||
{
|
||||
dbTranslation = new GanjoorPoemTranslation()
|
||||
var oldPublished = await _context.PoemTranslations.Where(t => t.LanguageId == translation.LanguageId && t.PoemId == translation.PoemId && t.Published == true).ToListAsync();
|
||||
foreach (var item in oldPublished)
|
||||
{
|
||||
LanguageId = translation.LanguageId,
|
||||
PoemId = translation.PoemId,
|
||||
Title = translation.Title,
|
||||
Published = true
|
||||
};
|
||||
_context.PoemTranslations.Add(dbTranslation);
|
||||
item.Published = false;
|
||||
_context.PoemTranslations.Update(item);
|
||||
}
|
||||
}
|
||||
else
|
||||
var dbTranslation = new GanjoorPoemTranslation()
|
||||
{
|
||||
dbTranslation.Title = translation.Title;
|
||||
_context.PoemTranslations.Update(dbTranslation);
|
||||
}
|
||||
LanguageId = translation.LanguageId,
|
||||
PoemId = translation.PoemId,
|
||||
Title = translation.Title,
|
||||
Published = true,
|
||||
Verses = new List<GanjoorVerseTranslation>(),
|
||||
UserId = userId,
|
||||
DateTime = DateTime.Now
|
||||
};
|
||||
|
||||
var verses = await _context.GanjoorVerses.Where(v => v.PoemId == translation.PoemId).ToListAsync();
|
||||
foreach (var translatedVerse in translation.TranslatedVerses)
|
||||
{
|
||||
var verse = verses.Where(v => v.VOrder == translatedVerse.VOrder).Single();
|
||||
var dbTranslatedVerse = await _context.VerseTranslations.Where(t => t.LanguageId == translation.LanguageId && t.VerseId == verse.Id).SingleOrDefaultAsync();
|
||||
if (dbTranslatedVerse == null)
|
||||
{
|
||||
dbTranslatedVerse = new GanjoorVerseTranslation()
|
||||
dbTranslation.Verses
|
||||
.Add(
|
||||
new GanjoorVerseTranslation()
|
||||
{
|
||||
LanguageId = translation.LanguageId,
|
||||
VerseId = verse.Id,
|
||||
TText = translatedVerse.TText
|
||||
};
|
||||
_context.VerseTranslations.Add(dbTranslatedVerse);
|
||||
}
|
||||
else
|
||||
{
|
||||
dbTranslatedVerse.TText = translatedVerse.TText;
|
||||
_context.VerseTranslations.Update(dbTranslatedVerse);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
_context.PoemTranslations.Add(dbTranslation);
|
||||
|
||||
await _context.SaveChangesAsync();
|
||||
|
||||
return new RServiceResult<bool>(true);
|
||||
}
|
||||
catch(Exception exp)
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<bool>(false, exp.ToString());
|
||||
}
|
||||
@ -195,12 +188,11 @@ namespace RMuseum.Services.Implementation
|
||||
{
|
||||
try
|
||||
{
|
||||
var dbTranslation = await _context.PoemTranslations.Where(t => t.LanguageId == langId && t.PoemId == poemId).SingleOrDefaultAsync();
|
||||
var dbTranslation = await _context.PoemTranslations.Include(t => t.Verses).Where(t => t.LanguageId == langId && t.PoemId == poemId && t.Published == true).SingleOrDefaultAsync();
|
||||
if (dbTranslation == null)
|
||||
return new RServiceResult<GanjoorPoemTranslationViewModel>(null); //not found
|
||||
var verses = await _context.GanjoorVerses.Where(v => v.PoemId == poemId).ToListAsync();
|
||||
var verseIds = verses.Select(v => v.Id).ToList();
|
||||
var dbVerseTranslations = await _context.VerseTranslations.Where(t => t.LanguageId == langId && verseIds.Contains(t.VerseId)).OrderBy(t => t.VerseId).ToArrayAsync();
|
||||
|
||||
return new RServiceResult<GanjoorPoemTranslationViewModel>
|
||||
(
|
||||
@ -209,7 +201,7 @@ namespace RMuseum.Services.Implementation
|
||||
LanguageId = langId,
|
||||
PoemId = poemId,
|
||||
Title = dbTranslation == null ? null : dbTranslation.Title,
|
||||
TranslatedVerses = dbVerseTranslations.Select(v =>
|
||||
TranslatedVerses = dbTranslation.Verses.Select(v =>
|
||||
new GanjoorVerseTranslationViewModel()
|
||||
{
|
||||
VOrder = verses.Where(pv => pv.Id == v.VerseId).Single().VOrder,
|
||||
@ -220,7 +212,7 @@ namespace RMuseum.Services.Implementation
|
||||
);
|
||||
|
||||
}
|
||||
catch(Exception exp)
|
||||
catch (Exception exp)
|
||||
{
|
||||
return new RServiceResult<GanjoorPoemTranslationViewModel>(null, exp.ToString());
|
||||
}
|
||||
@ -235,17 +227,16 @@ namespace RMuseum.Services.Implementation
|
||||
{
|
||||
try
|
||||
{
|
||||
var dbTranslations = await _context.PoemTranslations.Where(t => t.PoemId == poemId).OrderBy(t => t.LanguageId).ToArrayAsync();
|
||||
var dbTranslations = await _context.PoemTranslations.Include(t => t.Verses).Where(t => t.PoemId == poemId && t.Published == true).OrderBy(t => t.LanguageId).ToArrayAsync();
|
||||
List<GanjoorPoemTranslationViewModel> res = new List<GanjoorPoemTranslationViewModel>();
|
||||
if(dbTranslations.Length > 0)
|
||||
if (dbTranslations.Length > 0)
|
||||
{
|
||||
|
||||
}
|
||||
var verses = await _context.GanjoorVerses.Where(v => v.PoemId == poemId).ToListAsync();
|
||||
var verseIds = verses.Select(v => v.Id).ToList();
|
||||
foreach(var dbTranslation in dbTranslations)
|
||||
foreach (var dbTranslation in dbTranslations)
|
||||
{
|
||||
var dbVerseTranslations = await _context.VerseTranslations.Where(t => t.LanguageId == dbTranslation.LanguageId && verseIds.Contains(t.VerseId)).OrderBy(t => t.VerseId).ToArrayAsync();
|
||||
|
||||
res.Add(
|
||||
new GanjoorPoemTranslationViewModel()
|
||||
@ -253,7 +244,7 @@ namespace RMuseum.Services.Implementation
|
||||
LanguageId = dbTranslation.LanguageId,
|
||||
PoemId = poemId,
|
||||
Title = dbTranslation == null ? null : dbTranslation.Title,
|
||||
TranslatedVerses = dbVerseTranslations.Select(v =>
|
||||
TranslatedVerses = dbTranslation.Verses.Select(v =>
|
||||
new GanjoorVerseTranslationViewModel()
|
||||
{
|
||||
VOrder = verses.Where(pv => pv.Id == v.VerseId).Single().VOrder,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user