public async Task <int> GenerateDocx(Holiday holiday, Employee employee, FileTypeEnum holidayDocumentType) { if (holiday is null) { throw new ArgumentNullException(nameof(holiday), "Holiday does not exist"); } try { var replacementMap = GetReplacementMap(holiday, employee, holidayDocumentType); var templatePath = GetTemplatePath(holidayDocumentType); var documentFileName = await _fileUtility.GetGeneratedDocxName(holiday.Id, holidayDocumentType); var fileName = _fileUtility.ExtractNameFromPath(documentFileName); var fileId = await _fileService.CreateFileRecord(fileName, holidayDocumentType); await ProcessTemplate(templatePath, documentFileName, replacementMap, holidayDocumentType); return(fileId); } catch (Exception exception) { _logger.LogError($"Document generation failed for {employee.Email}. Exception message: {exception.Message}"); throw; } }