public void CreateDublicateOrg(string modelId, long orgId) { var org = AppContext.EXP_DrugOrganizations.FirstOrDefault(e => e.Id == orgId); if (org == null) { return; } var newDosage = new EXP_DrugOrganizations { DrugDeclarationId = new Guid(modelId), AddressFact = org.AddressFact, AddressLegal = org.AddressLegal, BankBik = org.BankBik, BankCurencyDicId = org.BankCurencyDicId, BankIik = org.BankIik, BankName = org.BankName, BankSwift = org.BankSwift, Bin = org.Bin, BossFio = org.BossFio, BossFirstName = org.BossFirstName, BossLastName = org.BossLastName, BossMiddleName = org.BossMiddleName, BossPosition = org.BossPosition, ContactEmail = org.ContactEmail, ContactFax = org.ContactFax, ContactFio = org.ContactFio, ContactPhone = org.ContactPhone, ContactPosition = org.ContactPosition, CountryDicId = org.CountryDicId, DocDate = org.DocDate, DocExpiryDate = org.DocExpiryDate, DocNumber = org.DocNumber, Email = org.Email, Fax = org.Fax, Iin = org.Iin, IsResident = org.IsResident, ManufactureName = org.ManufactureName, NameEn = org.NameEn, NameKz = org.NameKz, NameRu = org.NameRu, ObjectId = org.ObjectId, OpfTypeDicId = org.OpfTypeDicId, OrgManufactureTypeDicId = org.OrgManufactureTypeDicId, PayerTypeDicId = org.PayerTypeDicId, PaymentBill = org.PaymentBill, Phone = org.Phone, Position = org.Position, Type = org.Type }; AppContext.EXP_DrugOrganizations.Add(newDosage); AppContext.SaveChanges(); }
public void SetDrugReestr(Guid modelId, long dosageId, int?reestrId) { var drugTypes = new Dictionary <int, int>(); drugTypes.Add(1, 1); //Лекарственный препарат drugTypes.Add(2, 2); //Иммунобиологический препарат drugTypes.Add(3, 3); //Лекарственное растительное сырье (сборы) drugTypes.Add(4, 4); //Гомеопатический препарат drugTypes.Add(6, 5); //Лекарственная субстанция drugTypes.Add(7, 6); //Лекарственный балк-продукт drugTypes.Add(8, 7); //Иммунобиологический балк-продукт drugTypes.Add(9, 8); //Радиопрепарат drugTypes.Add(10, 9); //Не фармакопейное лекарственное растительное сырье drugTypes.Add(11, 10); //Лекарственный препарат биологического происхождения var monufactureType = new Dictionary <int, string>(); monufactureType.Add(1, "1"); //Производитель monufactureType.Add(2, "2"); //Держатель лицензии // monufactureType.Add(3, "1"); //Дистрибьютор monufactureType.Add(4, "4"); //Предприятие-упаковщик monufactureType.Add(5, "5"); //Заявитель // monufactureType.Add(6, "1"); //Производитель субстанции // monufactureType.Add(7, "1"); //Разработчик // monufactureType.Add(8, "3"); //Владелец регистрационного удостоверения monufactureType.Add(9, "7"); //Выпускающий контроль monufactureType.Add(10, "3"); //Держатель регистрационного удостоверения var model = AppContext.EXP_DrugDeclaration.FirstOrDefault(e => e.Id == modelId); if (model == null) { return; } var drug = new ExternalRepository().GEtRegisterDrugById(reestrId); var reestr = new ExternalRepository().GetReestrById(reestrId.Value); if (!string.IsNullOrEmpty(model.NameRu)) { model.NameRu = reestr.name; } if (!string.IsNullOrEmpty(model.NameKz)) { model.NameKz = reestr.name_kz; } if (!string.IsNullOrEmpty(model.ConcentrationRu)) { model.ConcentrationRu = drug.concentration; } if (!string.IsNullOrEmpty(model.ConcentrationKz)) { model.ConcentrationKz = drug.concentration_kz; } if (model.AtxId == null) { model.AtxId = drug.atc_id; } if (model.MnnId == null) { model.MnnId = drug.int_name_id; } if (model.DrugFormId == null) { model.DrugFormId = drug.dosage_form_id; } if (drugTypes.ContainsKey(drug.drug_type_id)) { if (model.EXP_DrugType.Count == 0) { var type = new EXP_DrugType(); type.DrugTypeId = drugTypes[drug.drug_type_id]; model.EXP_DrugType.Add(type); } else { model.EXP_DrugType.First().DrugTypeId = drugTypes[drug.drug_type_id]; } } if (drug.sr_register_use_methods.Count > 0) { var usemethod = model.EXP_DrugUseMethod.Select(e => e.UseMethodsId) ?? new List <int>(); // AppContext.EXP_DrugUseMethod.RemoveRange(model.EXP_DrugUseMethod); foreach (var drugSrRegisterUseMethod in drug.sr_register_use_methods) { if (!usemethod.Contains(drugSrRegisterUseMethod.use_method_id)) { var useMethod = new EXP_DrugUseMethod { UseMethodsId = drugSrRegisterUseMethod.use_method_id }; model.EXP_DrugUseMethod.Add(useMethod); } } } var repository = new ReadOnlyDictionaryRepository(); var orgManufactureTypes = repository.GetDictionaries(CodeConstManager.DIC_ORG_MANUFACTURE_TYPE); var countyDics = repository.GetDictionaries(CodeConstManager.DIC_COUNTRY_TYPE).OrderBy(x => x.Name); if (reestr.sr_register_producers.Count > 0) { AppContext.EXP_DrugOrganizations.RemoveRange(model.EXP_DrugOrganizations); foreach (var registerProducer in reestr.sr_register_producers) { var producer = new EXP_DrugOrganizations(); if (registerProducer.sr_producers != null) { producer.NameRu = registerProducer.sr_producers.name; producer.NameEn = registerProducer.sr_producers.name_eng; producer.NameKz = registerProducer.sr_producers.name_kz; producer.Bin = registerProducer.sr_producers.bin; if (monufactureType.ContainsKey(registerProducer.sr_producers.type_id)) { var orgManufactureType = orgManufactureTypes.FirstOrDefault( e => e.Code == monufactureType[registerProducer.sr_producers.type_id]); if (orgManufactureType != null) { producer.OrgManufactureTypeDicId = orgManufactureType.Id; } } } if (registerProducer.sr_countries != null) { var country = countyDics.FirstOrDefault( e => e.Name.ToLower() == registerProducer.sr_countries.name.ToLower()); if (country != null) { producer.CountryDicId = country.Id; } } model.EXP_DrugOrganizations.Add(producer); } } if (reestr.sr_register_substances.Count > 0) { EXP_DrugDosage dosage; if (dosageId == 0) { dosage = new EXP_DrugDosage { ConcentrationRu = drug.concentration, ConcentrationKz = drug.concentration_kz, }; } else { dosage = AppContext.EXP_DrugDosage.FirstOrDefault(e => e.Id == dosageId); AppContext.EXP_DrugSubstance.RemoveRange(dosage.EXP_DrugSubstance); AppContext.EXP_DrugPrice.RemoveRange(dosage.EXP_DrugPrice); AppContext.EXP_DrugWrapping.RemoveRange(dosage.EXP_DrugWrapping); } /* foreach (var expDrugDosage in model.EXP_DrugDosage) * { * AppContext.EXP_DrugSubstance.RemoveRange(expDrugDosage.EXP_DrugSubstance); * AppContext.EXP_DrugPrice.RemoveRange(expDrugDosage.EXP_DrugPrice); * AppContext.EXP_DrugWrapping.RemoveRange(expDrugDosage.EXP_DrugWrapping); * } * AppContext.EXP_DrugDosage.RemoveRange(model.EXP_DrugDosage); */ if (drug.dosage_value != null) { dosage.Dosage = drug.dosage_value.Value; } dosage.DosageMeasureTypeId = drug.dosage_measure_id; dosage.RegisterId = reestrId; foreach (var reestrSrRegisterSubstance in reestr.sr_register_substances) { var substance = new EXP_DrugSubstance { SubstanceId = reestrSrRegisterSubstance.substance_id, SubstanceTypeId = reestrSrRegisterSubstance.substance_type_id, CountryId = reestrSrRegisterSubstance.country_id, MeasureId = reestrSrRegisterSubstance.measure_id }; if (reestrSrRegisterSubstance.substance_count != null) { substance.SubstanceCount = reestrSrRegisterSubstance.substance_count.ToString(); } dosage.EXP_DrugSubstance.Add(substance); } foreach (var registerBoxes in reestr.sr_register_boxes) { var wrapping = new EXP_DrugWrapping() { WrappingKindId = registerBoxes.box_id, VolumeMeasureId = registerBoxes.volume_measure_id, CountUnit = registerBoxes.unit_count, Note = registerBoxes.description, }; if (registerBoxes.volume != null) { wrapping.WrappingVolume = double.Parse(registerBoxes.volume.ToString()); } if (!string.IsNullOrEmpty(registerBoxes.box_size)) { double size; if (double.TryParse(registerBoxes.box_size, out size)) { wrapping.WrappingSize = size; } } dosage.EXP_DrugWrapping.Add(wrapping); } if (dosage.Id == 0) { model.EXP_DrugDosage.Add(dosage); } } try { AppContext.SaveChanges(); } catch (DbEntityValidationException e) { foreach (var eve in e.EntityValidationErrors) { Console.WriteLine("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { Console.WriteLine("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } throw; } }