using LCU.API.Internal.Operations.IncentiveApi.Models.DataTransfer; using LCU.Library.Internal.IncentiveApiModels.Entities; using LCU.API.Internal.Operations.IncentiveApi.Models; using LCU.API.Internal.Operations.IncentiveApi.Models.ExternalActivities; using LCU.Library.Internal.IncentiveApiModels.Common; using LCU.Library.Internal.IncentiveApiModels.Requests; using LCU.Library.Internal.IncentiveApiModels.Results; namespace LCU.API.Internal.Operations.IncentiveApi.Services; public interface IActivityService { Task SaveActivityAsync(Activity activity); Task SaveActivityRangeAsync(IReadOnlyCollection activity); Task> GetActivitiesAsync(); Task> ListByFilterAsync(ActivityFilter filter); Task ApplyStateChange(ActivityStateChange activityStateChange, bool commitTransaction = true); Task> GetActivityStateChanges(int activityId); Task> GetDepartmentActivityForMonthRangeAsync(List userDepartments, MonthRange monthRange); Task GetActivity(int activityId); Task CreateAndRetrieveActivity(Activity activity); Task GetActivityForStateUpdate(Activity queryActivity); Task GetActivityForDetailUpdate(Activity queryActivity); Task ValidateCanApplyActivityStateChange(AppUser appUser, ActivityStateChange activityStateChange); Task RequestTransfer(ActivityTransferRequest activityTransferRequest); Task TransferToOwnDepartment(ActivityTransferRequest activityTransferRequest, AppUser employee); Task> MatchOrExpireReferrals(); Task RunReferralStatusUpdates(); Task ApproveTransfer(AppUser appUser, ActivityTransferApprovalRequest activityTransferApproval); Task GetRequestedTransfer(int activityId); Task CancelPendingTransfersBetween(MonthRange range); Task> FilterExternalActivitiesByExistingSourceId(List incomingEternalActivities); Task GetActivityAuthorizedCommands(AppUser appUser, int activityId); }