public ActionResult SaveTimeOff(StaffUnavailabilityRecordDto unavailability, int staffMemberId) { var action = new SaveTimeOffAction <ActionResult>(ServiceRegistry) { OnSuccess = () => ManageStaffMemberLeave(staffMemberId), OnFailure = (n) => ManageStaffMemberLeave(staffMemberId, n) }; return(action.Invoke(staffMemberId, unavailability)); }
public T Invoke(int staffMemberId, StaffUnavailabilityRecordDto unavailability) { Guard.InstanceNotNull(OnSuccess, "OnSuccess"); Guard.InstanceNotNull(OnFailure, "OnFailure"); var result = serviceRegistry.StaffService.SaveUnavailability(new SaveUnavailabilityRequest() { StaffId = staffMemberId, Unavailability = new List <StaffUnavailabilityRecordDto> { unavailability } }); var managerSpecificErrors = result.NotificationCollection.Errors(ClientErrorCodes.Managers); return(managerSpecificErrors.Any() ? OnFailure(managerSpecificErrors) : OnSuccess()); }