I want to Group by By EmployeeName and DepartmentName
also in employeeChargesDto By ChargeType Count the ChargeCount and Sum the TotalAmount
I don't know how to do it using automapper
I Have The Following Tables
public partial class Employee
{
[Key]
public int EmployeeDetialID { get; set; }
public string EmployeeName { get; set; }
public string DepartmentName { get; set; }
public ICollection<FoodCheck> FoodChecks { get; set; }
}
public class FoodCheck
{
[Key]
public int FoodCheckID { get; set; }
public int EmployeeDetialID { get; set; }
public virtual Employee Employee { get; set; }
[Column(TypeName = "date")]
public DateTime CheckDate { get; set; }
public ICollection<EmployeeCharge> EmployeeCharges { get; set; }
}
public class EmployeeCharge
{
[Key]
public int ChargeID { get; set; }
public int FoodCheckID { get; set; }
public virtual FoodCheck FoodCheck { get; set; }
public string ChargeType { get; set; }
public int ChargeCount { get; set; }
public decimal TotalAmount { get; set; }
}
The Query
var query = _context.FoodChecks
.OrderByDescending(x => x.FoodCheckID)
.ProjectTo<FoodCheckReportDto>(_mapper.ConfigurationProvider)
.ToListAsync();
Dtos and Mapping
public class FoodCheckReportDto
{
public int EmployeeDetialID { get; set; }
public string EmployeeName { get; set; }
public string DepartmentName { get; set; }
public ICollection<EmplyeeChargeDto> EmployeeCharges { get; set; }
}
public class EmployeeChargeDto
{
public string ChargeType { get; set; }
public int ChargeCount { get; set; }
public decimal TotalAmount { get; set; }
}
CreateMap<FoodCheck, FoodCheckReportDto>()
.ForMember(d => d.EmployeeName, o => o.MapFrom(s => s.EmployeeName))
.ForMember(d => d.DepartmentName, o => o.MapFrom(s =>s.DepartmentName))
.ForMember(d => d.EmployeeCharges, o => o.MapFrom(s => s.EmployeeCharges));
The Output
[
{
"employeeDetialID": 7,
"employeeName": "Ahamd",
"departmentName": "Surgery",
"employeeCharges": [
{
"chargeType": "Charged",
"chargeCount": 1,
"totalAmount": 220.0000
}
]
},
{
"employeeDetialID": 7,
"employeeName": "Ahamd",
"departmentName": "Surgery",
"employeeCharges": [
{
"chargeType": "Charged",
"chargeCount": 1,
"totalAmount": 220.0000
}
]
},
{
"employeeDetialID": 7,
"employeeName": "Ahamd",
"departmentName": "Surgery",
"employeeCharges": [
{
"chargeType": "Paid",
"chargeCount": 2,
"totalAmount": 440.0000
}
]
},
]