70 lines
2.7 KiB
C#
70 lines
2.7 KiB
C#
using LCU.API.Internal.Operations.IncentiveApi.Models.DataTransfer;
|
|
using LCU.API.Internal.Operations.IncentiveApi.Models.ExternalActivities;
|
|
using LCU.API.Internal.Operations.IncentiveApiLib.Services;
|
|
using LCU.API.Internal.Operations.IncentiveApiLib.Repositories;
|
|
using LCU.Library.Internal.IncentiveApiModels.Entities;
|
|
using LCU.Library.Internal.IncentiveApiModels.Enums;
|
|
|
|
namespace LCU.API.Internal.Operations.IncentiveApi.Services.ExternalActivity;
|
|
|
|
public class NewAtmCheckCardActivityStrategy : IExternalActivityStrategy
|
|
{
|
|
private readonly IUserService _userService;
|
|
private readonly IDepartmentRepository _departmentRepository;
|
|
|
|
public NewAtmCheckCardActivityStrategy(IUserService userService, IDepartmentRepository departmentRepository)
|
|
{
|
|
_userService = userService;
|
|
_departmentRepository = departmentRepository;
|
|
}
|
|
|
|
public bool CanMapActivity(IExternalActivity activity)
|
|
{
|
|
return activity.GetActivityType() == ActivityType.Other && (activity.GetProductType() == Product.ATMCard ||
|
|
activity.GetProductType() == Product.CheckCard);
|
|
}
|
|
|
|
public async Task<Activity> MapToActivityManagerActivity(IExternalActivity activity)
|
|
{
|
|
AppUser appUser = null;
|
|
Department department = null;
|
|
try
|
|
{
|
|
if (activity is NewAtmCheckCardActivity atmCheckCardActivity)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(atmCheckCardActivity.EmployeeEmail))
|
|
{
|
|
appUser = await _userService.TryFindSingleUserByName(new UserNameSearchRequest()
|
|
{
|
|
FirstName = atmCheckCardActivity.AssociateFirst,
|
|
MiddleInit = atmCheckCardActivity.AssociateMiddleInit,
|
|
LastName = atmCheckCardActivity.AssociateLast
|
|
});
|
|
}
|
|
else
|
|
{
|
|
appUser = await _userService.GetUserByAdEmailAsync(atmCheckCardActivity.EmployeeEmail);
|
|
}
|
|
}
|
|
|
|
if (appUser == null)
|
|
{
|
|
return activity.MapToActivity();
|
|
}
|
|
|
|
department = await _departmentRepository.FindUserHomeDepartment(appUser);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Log.Error(ex,
|
|
$"Failed to get data for NewAtmCheckCardActivity with sourceId: {activity.MapToActivity().SourceId}. Falling back to basic mapping.");
|
|
}
|
|
|
|
var mappedActivity = activity.MapToActivity();
|
|
mappedActivity.AppUserId = appUser?.Id ?? Guid.Empty;
|
|
mappedActivity.EmployeeId = appUser?.EmployeeId;
|
|
mappedActivity.DepartmentId = department?.Id ?? -1;
|
|
return mappedActivity;
|
|
}
|
|
}
|