예제 #1
0
 public static T Insert <T>(IDbConnection con, T entity, IDbTransaction ts) where T : class
 {
     try
     {
         string id = DateTime.Now.Ticks.ToString();
         FileHelper.UploadFileInfo fileInfo = null;
         entity.GetType().GetProperty("id")?.SetValue(entity, id);
         entity.GetType().GetProperty("createdAt")?.SetValue(entity, DateTime.Now);
         entity.GetType().GetProperty("updatedAt")?.SetValue(entity, null);
         entity.GetType().GetProperty("deletedAt")?.SetValue(entity, null);
         if (entity.GetType().GetProperty("file")?.GetValue(entity) != null)
         {
             fileInfo = FileHelper.setFilePath(
                 (IFormFile)entity.GetType().GetProperty("file")?.GetValue(entity),
                 (string)entity.GetType().GetProperty("filePath")?.GetValue(entity),
                 (string)entity.GetType().GetProperty("id")?.GetValue(entity)
                 );
             entity.GetType().GetProperty("filePath").SetValue(entity, fileInfo.filePath);
         }
         con.Insert(entity, transaction: ts);
         if (fileInfo != null)
         {
             FileHelper.uploadFileAsync(fileInfo);
         }
         return(entity);
     }
     catch { throw; }
 }
예제 #2
0
        public static T Update <T>(IDbConnection con, T entity, IDbTransaction ts) where T : class
        {
            try
            {
                string id = (string)entity.GetType().GetProperty("id")?.GetValue(entity);
                FileHelper.UploadFileInfo fileInfo = null;
                T data = con.Get <T>(id, transaction: ts);
                if (data == null)
                {
                    throw new ArgumentException("ID '" + id + "' could'nt be found");
                }

                foreach (PropertyInfo propertyInfo in data.GetType().GetProperties())
                {
                    if (propertyInfo.PropertyType == typeof(IFormFile) || propertyInfo.Name == "createdAt")
                    {
                        continue;
                    }
                    var source = entity.GetType().GetProperty(propertyInfo.Name)?.GetValue(entity);
                    var target = propertyInfo.GetValue(data);
                    if (source != null && (source != target))
                    {
                        propertyInfo?.SetValue(data, source);
                    }
                }
                data.GetType().GetProperty("updatedAt")?.SetValue(data, DateTime.Now);
                data.GetType().GetProperty("deletedAt")?.SetValue(data, null);
                if (entity.GetType().GetProperty("file")?.GetValue(entity) != null)
                {
                    fileInfo = FileHelper.setFilePath(
                        (IFormFile)entity.GetType().GetProperty("file")?.GetValue(entity),
                        (string)entity.GetType().GetProperty("filePath")?.GetValue(entity),
                        (string)entity.GetType().GetProperty("id")?.GetValue(entity)
                        );
                    data.GetType().GetProperty("filePath").SetValue(data, fileInfo.filePath);
                }
                con.Update(data, transaction: ts);
                if (fileInfo != null)
                {
                    FileHelper.uploadFileAsync(fileInfo);
                }
                return(data);
            }
            catch { throw; }
        }