LSFE/LSFE.MobApp/Mapper/ApiEntityMapper.cs
2026-07-30 10:31:04 +08:00

313 lines
14 KiB
C#

using LSFE.Infrastructure.Dto.Maintenance;
using LSFE.Infrastructure.Dto.Planning;
using LSFE.Infrastructure.Entities;
using LSFE.Infrastructure.Entities.Doctor;
using LSFE.Infrastructure.Entities.Maintenance;
using LSFE.Infrastructure.Entities.Planning;
using LSFE.Infrastructure.Entities.TimeKeeping;
using LSFE.MobApp.Entities.Location;
using System.Threading.Tasks;
namespace LSFE.MobApp.Mapper
{
public static class ApiEntityMapper
{
#region Get Mapping
public static Entities.Doctor.Doctor MapDoctorFromApi(Entities.Doctor.Doctor apiEntity)
{
return new Entities.Doctor.Doctor
{
Id=Guid.NewGuid(),
DoctorId = apiEntity.DoctorId,
FirstName = apiEntity.FirstName,
LastName = apiEntity.LastName,
MiddleInitial = apiEntity.MiddleInitial,
MaxVisit = apiEntity.MaxVisit,
SpecializationName = apiEntity.SpecializationName,
PhoneNo = apiEntity.PhoneNo,
BirthDate = apiEntity.BirthDate,
EmailAddress = apiEntity.EmailAddress,
LicenseNo = apiEntity.LicenseNo,
InstitutionId = apiEntity.InstitutionId,
InstitutionName = apiEntity.InstitutionName,
Address = apiEntity.Address,
Status = apiEntity.Status,
IsTerritorial = apiEntity.IsTerritorial,
DistrictName = apiEntity.DistrictName,
MRRawPlanId = apiEntity.MRRawPlanId,
IsCatchUpCall = apiEntity.IsCatchUpCall,
CreatedDate =DateTime.Now
};
}
public static Institution MapInstutionFromApi(Institutions apiEntity)
{
return new Institution
{
Id = Guid.NewGuid(), // Generate new GUID for local unique ID
InstitutionId = apiEntity.InstitutionId, // Store the server ID
InstitutionName = apiEntity.InstitutionName,
TerritoryId = apiEntity.TerritoryId,
IsActive = apiEntity.IsActive,
LastSyncedAt = DateTime.UtcNow,
NeedsSync = false,
CreatedDate = DateTime.UtcNow
};
}
public static Entities.Account.Attendance MapAttendanceFromApi(Attendance apiEntity)
{
return new Entities.Account.Attendance
{
AppAttendanceId = Guid.Parse(apiEntity.AppAttendanceId),
TimeIn = apiEntity.TimeIn,
TimeOut = apiEntity.TimeOut,
UserId = apiEntity.UserId,
TimeInLocation = apiEntity.TimeInLocation,
TimeOutLocation = apiEntity.TimeOutLocation,
SignatureFileNameIn = apiEntity.SignatureFileNameIn,
SignatureFileNameOut= apiEntity.SignatureFileNameOut
};
}
public static Entities.Planning.ProductTransaction MapProductTransFromApi(ProductTransactionDto apiEntity)
{
return new Entities.Planning.ProductTransaction
{
Id = Guid.NewGuid(),
ProductTransId=apiEntity.ProductTransId,
ProductId = apiEntity.ProductId,
DoctorId = apiEntity.DoctorId,
AppointmentDate = apiEntity.AppointmentDate.HasValue
? apiEntity.AppointmentDate.Value.ToDateTime(TimeOnly.MinValue)
: default,
ProductName = apiEntity.ProductName,
ProductLink = apiEntity.ProductLink,
UserId = apiEntity.UserId,
IsActive = apiEntity.IsActive
};
}
public static Entities.Planning.Product MapProductFromApi(Products apiEntity)
{
return new Entities.Planning.Product
{
Id = Guid.NewGuid(),
ProductId = apiEntity.ProductId,
ProductName = apiEntity.ProductName,
ProductLink = apiEntity.ProductLink,
UserId = apiEntity.UserId,
IsActive = apiEntity.IsActive
};
}
public static Entities.Planning.InventoryTransaction MapInventoryTransFromApi(InventoryTransaction apiEntity)
{
return new Entities.Planning.InventoryTransaction
{
Id = Guid.NewGuid(),
InventoryTransId = apiEntity.InventoryTransId,
InventoryId = apiEntity.InventoryId,
Description = apiEntity.Description,
DoctorId= apiEntity.DoctorId,
MRRawPlanId= apiEntity.MRRawPlanId,
AppointmentDate = apiEntity.AppointmentDate.HasValue
? apiEntity.AppointmentDate.Value.ToDateTime(TimeOnly.MinValue)
: default,
QtyIn = apiEntity.QtyIn,
UserId = apiEntity.UserId,
IconEmojiId = apiEntity.IconEmojiId,
CreatedBy = apiEntity.CreatedBy,
UpdatedDate= apiEntity.UpdatedDate,
UpdatedBy= apiEntity.UpdatedBy,
CreatedDate= apiEntity.CreatedDate,
IsActive = apiEntity.IsActive
};
}
public static Entities.Planning.MRRawPlan MapMRRawPlanFromApi(MRRawPlansDto apiEntity)
{
return new Entities.Planning.MRRawPlan
{
Id = Guid.NewGuid(),
MRRawPlanId = apiEntity.MRRawPlanId,
MRPlanDetailId = apiEntity.MRPlanDetailId,
DoctorId = apiEntity.DoctorId,
VisitCount = apiEntity.VisitCount,
CallDate = apiEntity.CallDate.HasValue
? apiEntity.CallDate.Value.ToDateTime(TimeOnly.MinValue)
: default,
ActualCallDate = apiEntity.ActualCallDate.HasValue
? apiEntity.ActualCallDate.Value.ToDateTime(TimeOnly.MinValue)
: default,
StartTime = apiEntity.StartTime,
EndTime = apiEntity.EndTime,
Longitude = apiEntity.Longitude,
Latitude = apiEntity.Latitude,
Location = apiEntity.Location,
IsSignature = apiEntity.IsSignature,
SignatureFileName = apiEntity.SignatureFileName,
IsMissed = apiEntity.IsMissed,
MissedReason = apiEntity.MissedReason,
IsDoctorProxy = apiEntity.IsDoctorProxy,
IsReschedule = apiEntity.IsReschedule,
RescheduleReason = apiEntity.RescheduleReason,
CallType = apiEntity.CallType,
IsJoinCall = apiEntity.IsJoinCall,
IsCatchUpCall = apiEntity.IsCatchUpCall,
CycleId = apiEntity.CycleId,
IsApproved = apiEntity.IsApproved,
IsRecovered = apiEntity.IsRecovered,
SLP = apiEntity.SLP,
Status= apiEntity.Status,
ApprovedBy = apiEntity.ApprovedBy,
ApprovedDate = apiEntity.ApprovedDate
};
}
public static Entities.Account.User MapUserFromApi(AppsUsers apiEntity)
{
return new Entities.Account.User
{
Id = Guid.NewGuid(),
UserId = apiEntity.Id,
UserName = apiEntity.UserName,
FullName = apiEntity.FullName,
Password = apiEntity.PasswordHash,
Email = apiEntity.Email ?? "N/A",
PhoneNumber = apiEntity.PhoneNumber ?? "N/A",
EmployeeId = apiEntity.EmployeeId,
Company = apiEntity.Company ?? "N/A",
LockoutEnabled = apiEntity.LockoutEnabled
};
}
#endregion
#region Update Mapping
public static void UpdateUserFromApi(Entities.Account.User existing,
AppsUsers apiEntity)
{
existing.UserId = apiEntity.Id;
existing.UserName = apiEntity.UserName;
existing.FullName = apiEntity.FullName;
existing.Password = apiEntity.PasswordHash;
existing.Email = apiEntity.Email ?? "N/A";
existing.PhoneNumber = apiEntity.PhoneNumber ?? "N/A";
existing.EmployeeId = apiEntity.EmployeeId;
existing.Company = apiEntity.Company ?? "N/A";
existing.LockoutEnabled = apiEntity.LockoutEnabled;
}
public static void UpdateMRRawPlanFromApi(Entities.Planning.MRRawPlan existing,
MRRawPlansDto apiEntity)
{
existing.MRRawPlanId = apiEntity.MRRawPlanId;
existing.MRPlanDetailId = apiEntity.MRPlanDetailId;
existing.DoctorId = apiEntity.DoctorId;
existing.VisitCount = apiEntity.VisitCount;
existing.CallDate = apiEntity.CallDate.HasValue
? apiEntity.CallDate.Value.ToDateTime(TimeOnly.MinValue)
: default;
existing.ActualCallDate = apiEntity.ActualCallDate.HasValue
? apiEntity.ActualCallDate.Value.ToDateTime(TimeOnly.MinValue)
: default;
existing.StartTime = apiEntity.StartTime;
existing.EndTime = apiEntity.EndTime;
existing.Longitude = apiEntity.Longitude;
existing.Latitude = apiEntity.Latitude;
existing.Location = apiEntity.Location;
existing.IsSignature = apiEntity.IsSignature;
existing.SignatureFileName = apiEntity.SignatureFileName;
existing.IsMissed = apiEntity.IsMissed;
existing.MissedReason = apiEntity.MissedReason;
existing.IsDoctorProxy = apiEntity.IsDoctorProxy;
existing.IsReschedule = apiEntity.IsReschedule;
existing.RescheduleReason = apiEntity.RescheduleReason;
existing.CallType = apiEntity.CallType;
existing.IsJoinCall = apiEntity.IsJoinCall;
existing.CycleId = apiEntity.CycleId;
existing.IsApproved = apiEntity.IsApproved;
existing.IsRecovered = apiEntity.IsRecovered;
existing.SLP = apiEntity.SLP;
existing.ApprovedBy = apiEntity.ApprovedBy;
existing.ApprovedDate = apiEntity.ApprovedDate;
existing.IsCatchUpCall = apiEntity.IsCatchUpCall;
existing.Status = apiEntity.Status;
existing.ForAddressTranslation = false;
}
public static void UpdateInventoryTransFromApi(Entities.Planning.InventoryTransaction existing,
InventoryTransaction apiEntity)
{
existing.InventoryTransId = apiEntity.InventoryTransId;
existing.InventoryId = apiEntity.InventoryId;
existing.Description = apiEntity.Description;
existing.DoctorId = apiEntity.DoctorId;
existing.MRRawPlanId = apiEntity.MRRawPlanId;
// Convert DateOnly to DateTime
existing.AppointmentDate = apiEntity.AppointmentDate.HasValue
? apiEntity.AppointmentDate.Value.ToDateTime(TimeOnly.MinValue)
: default;
existing.QtyIn = apiEntity.QtyIn;
existing.UserId = apiEntity.UserId;
existing.CreatedBy = apiEntity.CreatedBy;
existing.UpdatedDate = apiEntity.UpdatedDate;
existing.UpdatedBy = apiEntity.UpdatedBy;
existing.CreatedDate = apiEntity.CreatedDate;
existing.IconEmojiId = apiEntity.IconEmojiId;
existing.IsActive = apiEntity.IsActive;
}
public static void UpdateProductTransFromApi(Entities.Planning.ProductTransaction existing,
ProductTransactionDto apiEntity)
{
existing.ProductTransId = apiEntity.ProductTransId;
existing.ProductId = apiEntity.ProductId;
existing.ProductName = apiEntity.ProductName;
existing.AppointmentDate =apiEntity.AppointmentDate.HasValue
? apiEntity.AppointmentDate.Value.ToDateTime(TimeOnly.MinValue)
: default;
existing.DoctorId = apiEntity.DoctorId;
existing.ProductLink = apiEntity.ProductLink;
existing.UserId = apiEntity.UserId;
existing.IsActive = apiEntity.IsActive;
}
public static void UpdateProductFromApi(Entities.Planning.Product existing,
Products apiEntity)
{
existing.ProductId = apiEntity.ProductId;
existing.ProductName = apiEntity.ProductName;
existing.ProductLink = apiEntity.ProductLink;
existing.UserId = apiEntity.UserId;
existing.IsActive = apiEntity.IsActive;
}
public static void UpdateDoctorFromApi(Entities.Doctor.Doctor existing,
Entities.Doctor.Doctor apiEntity)
{
existing.DoctorId = apiEntity.DoctorId;
existing.FirstName = apiEntity.FirstName;
existing.LastName = apiEntity.LastName;
existing.MiddleInitial = apiEntity.MiddleInitial;
existing.MaxVisit = apiEntity.MaxVisit;
existing.SpecializationName = apiEntity.SpecializationName;
existing.PhoneNo = apiEntity.PhoneNo;
existing.BirthDate = apiEntity.BirthDate;
existing.EmailAddress = apiEntity.EmailAddress;
existing.LicenseNo = apiEntity.LicenseNo;
existing.InstitutionId = apiEntity.InstitutionId;
existing.InstitutionName = apiEntity.InstitutionName;
existing.Address = apiEntity.Address;
existing.Status = apiEntity.Status;
existing.IsTerritorial = apiEntity.IsTerritorial;
existing.DistrictName = apiEntity.DistrictName;
existing.MRRawPlanId = apiEntity.MRRawPlanId;
existing.IsCatchUpCall = apiEntity.IsCatchUpCall;
existing.CreatedDate = DateTime.Now;
}
public static void UpdateInstutionFromApi(Institution existing,
Institutions apiEntity)
{
existing.InstitutionId = apiEntity.InstitutionId;
existing.InstitutionName = apiEntity.InstitutionName;
existing.TerritoryId = apiEntity.TerritoryId;
existing.IsActive = apiEntity.IsActive;
existing.LastSyncedAt = DateTime.UtcNow;
existing.NeedsSync = false;
}
#endregion
}
}