Thursday, 4 August 2022

.Net Core 6 AutoMapper

 Confoguration class

==========================================================


using AutoMapper;

using HANDSV3.MODELS.Dtos;

using HANDSV3.MODELS.Entities;


namespace HANDSV3.WEBAPI

{

    public class MapperProfile : Profile

    {

        public MapperProfile()

        {

            CreateMap<Messages, MessagesDto>()

               .ForMember(

                   dest => dest.MessageId,

                   opt => opt.MapFrom(src => $"{src.MessageId}")

               )

               .ForMember(

                   dest => dest.Message,

                   opt => opt.MapFrom(src => $"{src.Message}")

               )

               .ForMember(

                   dest => dest.Subject,

                   opt => opt.MapFrom(src => $"{src.Subject}")

               )

               .ForMember(

                   dest => dest.StartDate,

                   opt => opt.MapFrom(src => $"{src.StartDate}")

               )

               .ForMember(

                   dest => dest.EndDate,

                   opt => opt.MapFrom(src => $"{src.EndDate}")

               )

               .ForMember(

                   dest => dest.PriorityId,

                   opt => opt.MapFrom(src => $"{src.PriorityId}")

               )

                .ForMember(

                   dest => dest.created_by,

                   opt => opt.MapFrom(src => $"{src.created_by}")

               )

                .ForMember(

                   dest => dest.created_Date,

                   opt => opt.MapFrom(src => $"{src.created_Date}")

               )

                .ForMember(

                   dest => dest.updated_date,

                   opt => opt.MapFrom(src => $"{src.updated_date}")

               )

                .ForMember(

                   dest => dest.updated_by,

                   opt => opt.MapFrom(src => $"{src.updated_by}")

               );


            CreateMap<MessagesDto, Messages>()

               .ForMember(

                   dest => dest.MessageId,

                   opt => opt.MapFrom(src => $"{src.MessageId}")

               )

               .ForMember(

                   dest => dest.Message,

                   opt => opt.MapFrom(src => $"{src.Message}")

               )

               .ForMember(

                   dest => dest.Subject,

                   opt => opt.MapFrom(src => $"{src.Subject}")

               )

               .ForMember(

                   dest => dest.StartDate,

                   opt => opt.MapFrom(src => $"{src.StartDate}")

               )

               .ForMember(

                   dest => dest.EndDate,

                   opt => opt.MapFrom(src => $"{src.EndDate}")

               )

               .ForMember(

                   dest => dest.PriorityId,

                   opt => opt.MapFrom(src => $"{src.PriorityId}")

               )

                .ForMember(

                   dest => dest.created_by,

                   opt => opt.MapFrom(src => $"{src.created_by}")

               )

                .ForMember(

                   dest => dest.created_Date,

                   opt => opt.MapFrom(src => $"{src.created_Date}")

               )

                .ForMember(

                   dest => dest.updated_date,

                   opt => opt.MapFrom(src => $"{src.updated_date}")

               )

                .ForMember(

                   dest => dest.updated_by,

                   opt => opt.MapFrom(src => $"{src.updated_by}")

               );

        }

    }

}


App Startup
====================================================
using AutoMapper;

using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
//builder.Services.AddScoped<IDemographicService, DemographicService>();
//builder.Services.AddScoped<IDemographicRepository, DemographicRepository>();
//builder.Services.AddScoped<IUnitOfWork, UnitOfWork>();
//builder.Services.AddScoped<IDbFactory, DbFactory>();
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());

builder.Services.Configure<IISServerOptions>(options =>
{
    options.AutomaticAuthentication = false;
    options.AllowSynchronousIO = true;


});


//string cs = builder.Configuration.GetValue<string>("ConnectionStrings:HANDS3Database");
//builder.Services.AddDbContext<HandsDBContext>(options =>
//{
//    options.UseSqlServer(builder.Configuration.GetValue<string>("ConnectionStrings:HANDS3Database"));

//});
var app = builder.Build();


// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

Controler to map dto to entities
=================================
using AutoMapper;
using HANDSV3.CORE.Services;
using HANDSV3.MODELS.Dtos;
using Microsoft.AspNetCore.Mvc;

namespace HANDSV3.WEBAPI.Controllers
{
    [ApiController]
    [Route("[controller]")]
    public class MessagesController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };
        private readonly IMapper mapper;
        private readonly ILogger<MessagesController> _logger;
        private IMessageService messageService;

        public MessagesController(ILogger<MessagesController> logger, IMapper mapper)
        {
            _logger = logger;
            this.mapper = mapper;
            messageService = new MessageService();
        }

        [HttpGet]
        public IEnumerable<MessagesDto> Index()
        {
            var messageDetails = messageService.GetAll();
            var obj = mapper.Map<IEnumerable<MessagesDto>>(messageDetails);
            return obj;
        }
        [HttpPost]
        public bool Post(MessagesDto message)
        {
            var entity = mapper.Map<HANDSV3.MODELS.Entities.Messages >(message);
            var messageDetails = messageService.Add(entity);

            return messageDetails;
        }
        [HttpPut]
        public bool Put(MessagesDto message)
        {
            var entity = mapper.Map<HANDSV3.MODELS.Entities.Messages>(message);
            var messageDetails = messageService.Update(entity);
            return messageDetails;
        }
    }
}


No comments:

Post a Comment