public void AddOrUpdate(Context context) { if (context.IsNew()) { _contextRepository.Add(context); } else { _contextRepository.Update(context); } }
public void Then_expected_methods_are_called_the_correct_times() { _sut.Update(_foo); Assert.Multiple(() => { _contextService.Received(_expectedContextManageCount).InitContext(); _contextService.Received(_expectedContextManageCount).ClearCurrentContext(); _dbSet.Received(1).Update(_foo); _flushService.Received(1).FlushChanges(_context); }); }
/// <inheritdoc /> /// <summary> /// </summary> /// <param name="contextModel"></param> /// <returns></returns> public async Task <ContextModel> CreateOrUpdate(ContextModel contextModel) { if (contextModel.Id == Guid.Empty) { contextModel = NewContextModel(contextModel); } var contextDb = await _contextRepository.FindBy(s => s.Id == contextModel.Id).ConfigureAwait(false); if (contextDb == null) { var context = AutoMapper.Mapper.Map <Context>(contextModel); _contextRepository.Create(context); _contextRepository.Save(false, false, contextModel.Id); } else { AutoMapper.Mapper.Map(contextModel, contextDb); _contextRepository.Update(contextDb); _contextRepository.Save(false, false, contextModel.Id); } var contract = await BenChainApi.Client.Contract.AddContractWithHttpMessagesAsync(contextModel.Id, contextModel.Token1, contextModel.Token2, contextModel.FileCheckSum, contextModel.ContextHash).ConfigureAwait(false); //First Signator await _signatorServices.CreateOrUpdate(CreatedNewSignator(contextModel)); switch (contextModel.Ref) { case 0: //Case 1 //Second Signator var signator = CreatedNewSignator(contextModel); signator.ParticipantId = Guid.NewGuid(); // tweede await _signatorServices.CreateOrUpdate(signator); break; case 1: //Case 2 //Second Signator break; case 2: //Case 3 //Second Signator break; } return(contextModel); }
//Полиморфный объект общий для всех журналов выполненных работ. //По тиму модели базы вызывается необходимая стратегия /// <summary> /// Удалить запись журнала /// </summary> private async System.Threading.Tasks.Task <JsonResult> DeleteAsync <ModelDb>(int id) where ModelDb : class { #region Проверка существования записи в соответствующем журнале // CollectionStrategyWorksJournal Коллекция стратегий в одтельном файле - CollectionStrategyWorksJournal var strategy = new CollectionStrategyWorksJournal <ModelDb>(UnitOfWork) .GetStategyCore(); if ((await strategy.SelectByIdAsync(id)) == null) { LogProxy.Log(new DataLog(level: LogLevel.Warn, message: "Ошибка при удалении. Не удалось найти запись", id: id.ToString(), context: ContexLog.ExecutedWorkJournal)); return(Json(ConstMessage.DeleteUnexpectedError, JsonRequestBehavior.AllowGet)); } #endregion try { var repExecutedWorksJournal = new ContextRepository <ExecutedWorkJournal>(UnitOfWork.RepositoryExecutedWorkJournal); var journal = await UnitOfWork.RepositoryExecutedWorksJournal.SelectByIdAsync(id); var machine = await UnitOfWork.RepositoryRefMachine.SelectByIdAsync(journal.FkMachine); var workArea = await UnitOfWork.RepositoryRefWorkArea.SelectByIdAsync(machine.WorkArea); //Пометим как удаленную journal.IsDeleted = OracleBoolCharExtentions.ToString(true); repExecutedWorksJournal.Update(journal); LogProxy.Log(new DataLog(level: LogLevel.Info, message: "Удалено. Участок - " + workArea.Name + ", станок " + machine.Name, id: id.ToString(), jsonData: journal, context: ContexLog.ExecutedWorkJournal)); return(Json(ConstMessage.DeleteSuccess, JsonRequestBehavior.AllowGet)); } catch (Exception e) { LogProxy.Log(new DataLog(level: LogLevel.Error, message: "Ошибка при удалении записи журнала выполненных работ", id: id.ToString(), context: ContexLog.ExecutedWorkJournal, e: e)); return(Json(ConstMessage.DeleteUnexpectedError, JsonRequestBehavior.AllowGet)); } }
public void When_updating_a_null_entity_Then_an_exception_is_thrown() { Assert.That(() => _sut.Update(null), Throws.ArgumentNullException); }