public async Task <SaveResponse <ObjectId> > SaveAsync(SaveRequest <T> request, Action <T, T> populateAction = null) { try { if (!await ValidateDataDuplicate(request.Entity)) { return(SaveResponse <ObjectId> .FailResponse(request.Entity.Id, $"Dữ liệu đã tồn tại trong hệ thống")); } await PopulateSaveAsync(request, populateAction); var success = false; if (request.IsEdit) { var response = await collection.ReplaceOneAsync(a => a.Id == request.Entity.Id, request.Entity); success = response.IsModifiedCountAvailable; } else { await collection.InsertOneAsync(request.Entity); success = true; } if (!success) { return(SaveResponse <ObjectId> .FailResponse(request.Entity.Id, $"Đã xảy ra lỗi trong quá trình lưu {Title}")); } return(SaveResponse <ObjectId> .SuccessResponse(request.Entity.Id, $"Lưu {Title} thành công")); } catch (Exception ex) { return(SaveResponse <ObjectId> .FailResponse(request.Entity.Id, ex.Message)); } }