Esempio n. 1
0
        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));
            }
        }