public async Task <int> InsertProjectMaintenanceAttachmentFileAsync(ProjectMaintenanceAttachmentFileDto dto)
        {
            var sql = " DECLARE @ID int;" +
                      " INSERT INTO [dbo].[AttachmentFile] " +
                      " ([ProjectMaintenanceId] " +
                      " ,[AttachmentFileName] " +
                      " ,[CreatedId] " +
                      " ,[CreatedDate]) " +
                      " VALUES " +
                      " (@ProjectMaintenanceId " +
                      " ,@AttachmentFileName " +
                      " ,@CreatedId " +
                      " ,GETDATE() )" +
                      " SET @ID = SCOPE_IDENTITY(); " +
                      " SELECT @ID";

            var id = await Connection.QuerySingleAsync <int>(sql, new
            {
                ProjectMaintenanceId = dto.ProjectMaintenanceId,
                AttachmentFileName   = dto.AttachmentFileName,
                CreatedId            = dto.CreatedId,
            }, Transaction);

            return(id);
        }
        public async Task <IActionResult> Post([FromBody] ProjectMaintenanceAttachmentFileDto dto)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new { message = "Not a valid model" + ModelState.ToString() }));
            }
            try
            {
                _UnitOfWork.Transaction = _UnitOfWork.Begin();
                var duplicate = await _UnitOfWork.AttachmentFileRepository.GetProjectMaintenanceAttachmentFileNameAsync(dto);

                if (duplicate.Any())
                {
                    return(BadRequest(new { message = "Duplicated file" }));
                }
                var id = await _UnitOfWork.AttachmentFileRepository.InsertProjectMaintenanceAttachmentFileAsync(dto);

                _UnitOfWork.Commit();

                return(Ok(id));
            }
            catch (Exception ex)
            {
                _UnitOfWork.Dispose();
                return(BadRequest(new { message = ex.Message }));
            }
            finally
            {
                _UnitOfWork.Dispose();
            }
        }
        public async Task <IEnumerable <ProjectMaintenanceAttachmentFileDto> > GetProjectMaintenanceAttachmentFileNameAsync(ProjectMaintenanceAttachmentFileDto dto)
        {
            var sql = " SELECT  Id , ProjectId, AttachmentFileName , CreatedId , CreatedDate  " +
                      " FROM AttachmentFile  " +
                      " where AttachmentFileName = @fileName" +
                      " and ProjectMaintenanceId = @ProjectMaintenanceId" +
                      "  order by CreatedDate desc ";

            return(await SqlMapper.QueryAsync <ProjectMaintenanceAttachmentFileDto>(Connection, sql, new { fileName = dto.AttachmentFileName, ProjectMaintenanceId = dto.ProjectMaintenanceId }, transaction : Transaction));
        }