示例#1
0
        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);
        }