public ActionResult CreateApplication([DataSourceRequest] DataSourceRequest request, TmcInViewModel model) { if (ModelState.IsValid) { ApplicationPoaRepository repo = new ApplicationPoaRepository(false); TmcIn tmcIn = new TmcIn() { Id = Guid.NewGuid(), StateType = model.StateType, ContractDate = model.ContractDate, ContractNumber = model.ContractNumber, CreatedDate = DateTime.Now, CreatedEmployeeId = UserHelper.GetCurrentEmployee().Id, IsFullDelivery = model.IsFullDelivery, LastDeliveryDate = model.LastDeliveryDate, OwnerEmployeeId = model.OwnerEmployeeId, Provider = model.Provider, ProviderBin = model.ProviderBin, ExecutorEmployeeId = model.ExecutorEmployeeId, AgreementEmployeeId = model.AgreementEmployeeId, AccountantEmployeeId = model.AccountantEmployeeId }; repo.Insert(tmcIn); repo.Save(); var newDictionary = repo.GetTmcInViews(o => o.Id == tmcIn.Id).First(); model.TmcInId = tmcIn.Id; model.OwnerEmployeeValue = newDictionary.OwnerEmployeeValue; model.StateTypeValue = newDictionary.StateTypeValue; model.PowerOfAttorney = newDictionary.PowerOfAttorney; model.IsFullDeliveryValue = newDictionary.IsFullDeliveryValue; model.ExecutorEmployeeValue = newDictionary.ExecutorEmployeeValue; model.AgreementEmployeeValue = newDictionary.AgreementEmployeeValue; model.AccountantEmployeeValue = newDictionary.AccountantEmployeeValue; model.Id = newDictionary.Id; TmcRepository tmcRepo = new TmcRepository(); var dicRepo = new DictionaryRepository(false); var contractProducts = tmcRepo.GetI1cLimsContractProducts(lc => lc.ContractNumber == tmcIn.ContractNumber); foreach (var prod in contractProducts.ToList()) { var measureId = dicRepo.GetDictionaryIdByTypeAndDisplayName(Dictionary.MeasureType.DicCode, prod.Unit); if (measureId == null || measureId == Guid.Empty) { measureId = dicRepo.GetDictionaryIdByTypeAndName(Dictionary.MeasureType.DicCode, prod.Unit); } var tmc = new Tmc() { Id = Guid.NewGuid(), CreatedDate = DateTime.Now, CreatedEmployeeId = UserHelper.GetCurrentEmployee().Id, TmcInId = tmcIn.Id, StateType = 0, Number = prod.ProductId, Code = prod.ProductId, Name = prod.Name, Count = prod.QuantityVolume.Value, CountActual = 0, //prod.QuantityVolume.Value, CountFact = 0, //prod.QuantityVolume.Value, CountConvert = 0, // prod.QuantityVolume.Value, MeasureTypeDicId = measureId, MeasureTypeConvertDicId = measureId }; var tmcExist = tmcRepo.GetAsQuarable(t => t.Number == tmc.Number && t.StateType != Tmc.TmcStatuses.Writeoff).FirstOrDefault(); if (tmcExist == null) { tmcRepo.Insert(tmc); var limsTmc = new LimsTmcTemp() { TmcId = tmc.Id, TmcInId = tmc.TmcInId, CreatedDate = DateTime.Now, CountRequest = tmc.Count, IsSelected = false }; repo.AddLimsTmcTemp(limsTmc); } else if (tmcExist.CountFact < tmcExist.Count) { var limsTmc = new LimsTmcTemp() { TmcId = tmcExist.Id, TmcInId = tmcIn.Id, CreatedDate = DateTime.Now, CountRequest = prod.QuantityVolume.Value - tmcExist.CountFact, IsSelected = false }; if (prod.QuantityVolume.Value - tmcExist.CountFact > 0) { repo.AddLimsTmcTemp(limsTmc); } } } tmcRepo.Save(); repo.Save(); } return(Json(new[] { model }.ToDataSourceResult(request, ModelState))); }