public async Task <PrintingEditionDataModel> GetPrintingEditionDetailsAsync(long printingEditionId) { var printingEditionData = new PrintingEditionDataModel(); var sql = new StringBuilder($@"SELECT b.Id, b.Title, b.Price, b.Description, b.Currency, b.PrintingEditionType, t.Name FROM PrintingEditions as b LEFT JOIN AuthorInPrintingEditions as ap ON ap.PrintingEditionId = b.Id LEFT JOIN Authors as t ON t.Id = ap.AuthorId WHERE b.Id = @printingEditionId"); var queryResult = new List <dynamic>(); using (var connection = GetSqlConnection()) { queryResult = (await connection.QueryAsync(sql.ToString(), new { printingEditionId })).ToList(); } printingEditionData = queryResult.Select(x => new PrintingEditionDataModel { Id = x.Id, Title = x.Title, Description = x.Description, Currency = (Enums.Currency)x.Currency, Price = x.Price, PrintingEditionType = (Enums.PrintingEditionType)x.PrintingEditionType }).FirstOrDefault(); printingEditionData.Authors = queryResult.Select(x => new AuthorDataModel { Name = x.Name }).ToArray(); return(printingEditionData); }
public static PrintingEditionModelItem MapToModel(this PrintingEditionDataModel source, Enums.Currency currency = Enums.Currency.USD) { var instance = new PrintingEditionModelItem(); instance.Id = source.Id; instance.Price = source.Price; instance.PrintingEditionType = source.PrintingEditionType; instance.Title = source.Title; instance.Currency = currency; instance.Description = source.Description; instance.Price = source.Price; instance.Authors = source.Authors.Select(x => new AuthorModelItem { Id = x.Id, Name = x.Name }).ToList(); return(instance); }