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

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

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

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

                _UnitOfWork.Commit();

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

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