public async Task <Guid> Save(BranchDetailsDTO model) { var check = model.Id == Guid.Empty; if (check) { model.IsFromLicense = false; } var branchId = _dataService.Add <Branch>(model); await _dataService.SaveChangesAsync(); if (check) { var applicationBranch = new ApplicationBranch { LimsDocumentId = model.ApplicationId, BranchId = branchId }; _dataService.Add(applicationBranch); await _dataService.SaveChangesAsync(); if (model.AppType == "TRL") { //Вид діяльності обраний в МПД var trlActivityTypeEnum = _dataService.GetEntity <EnumRecord>(x => x.Code == model.TrlActivityType)?.FirstOrDefault(); _dataService.Add(new EntityEnumRecords() { EntityId = branchId, EntityType = "BranchApplication", EnumRecordType = trlActivityTypeEnum?.EnumType, EnumRecordCode = trlActivityTypeEnum?.Code }); if (model.PharmacyId != null) { _dataService.Add(new PharmacyItemPharmacy() { PharmacyId = model.PharmacyId.Value, PharmacyItemId = branchId }); } await _dataService.SaveChangesAsync(); } } else { if (model.AppType == "TRL") { var pharmacyItem = _dataService.GetEntity <PharmacyItemPharmacy>(x => x.PharmacyItemId == branchId)?.FirstOrDefault(); if (pharmacyItem != null) { _dataService.Remove(pharmacyItem); } if (model.PharmacyId != null) { _dataService.Add(new PharmacyItemPharmacy() { PharmacyId = model.PharmacyId.Value, PharmacyItemId = branchId }); } var entityEnumRecords = _dataService.GetEntity <EntityEnumRecords>(x => x.EntityId == branchId).ToList(); if (entityEnumRecords.Count > 0) { entityEnumRecords.ForEach(x => _dataService.Remove(x)); } //Види діяльності обрані в МПД var trlActivityTypeEnum = _dataService.GetEntity <EnumRecord>(x => x.Code == model.TrlActivityType)?.FirstOrDefault(); _dataService.Add(new EntityEnumRecords() { EntityId = branchId, EntityType = "BranchApplication", EnumRecordType = trlActivityTypeEnum?.EnumType, EnumRecordCode = trlActivityTypeEnum?.Code }); await _dataService.SaveChangesAsync(); } } return(branchId); }
public async Task <Guid> SaveApplication(PrlAppDetailDTO editModel, bool isBackOffice) { Guid appId; var userInfo = await _userInfoService?.GetCurrentUserInfoAsync(); var isNew = false; if (editModel.Id == Guid.Empty) { isNew = true; var model = new PrlAppDetailDTO(); _objectMapper.Map(editModel, model); if (model.OrgUnitId == Guid.Empty) { model.OrgUnitId = new Guid(userInfo.OrganizationId()); } if (isBackOffice) { model.IsCreatedOnPortal = false; model.BackOfficeAppState = "Project"; } else { model.AppState = "Project"; model.IsCreatedOnPortal = true; } model.AppType = "PRL"; var organizationInfo = new OrganizationInfo(); organizationInfo.OrganizationId = model.OrgUnitId == Guid.Empty ? new Guid(userInfo?.OrganizationId()) : model.OrgUnitId; organizationInfo.Type = "PRL"; if (string.IsNullOrEmpty(model.EDRPOU)) { if (isBackOffice == false) { organizationInfo.OrgDirector = userInfo.FullName(); } } else { organizationInfo.OrgDirector = model.OrgDirector; } organizationInfo.Name = model.OrgName; organizationInfo.EMail = model.EMail; organizationInfo.LegalFormType = model.LegalFormType; organizationInfo.OwnershipType = model.OwnershipType; organizationInfo.PhoneNumber = model.PhoneNumber; organizationInfo.FaxNumber = model.FaxNumber; organizationInfo.NationalAccount = model.NationalAccount; organizationInfo.InternationalAccount = model.InternationalAccount; organizationInfo.NationalBankRequisites = model.NationalBankRequisites; organizationInfo.InternationalBankRequisites = model.InternationalBankRequisites; organizationInfo.PassportSerial = model.PassportSerial; organizationInfo.PassportNumber = model.PassportNumber; organizationInfo.PassportDate = model.PassportDate; organizationInfo.PassportIssueUnit = model.PassportIssueUnit; organizationInfo.AddressId = model.AddressId; var license = _prlLicenseService.GetLicenseGuid(model.OrgUnitId); if (license == null) { if (editModel.AppSort == "AdditionalInfoToLicense") { organizationInfo.IsPendingLicenseUpdate = true; } organizationInfo.IsActualInfo = true; DataService.GetEntity <OrganizationInfo>(x => x.IsActualInfo && x.OrganizationId == model.OrgUnitId && x.Type == "PRL").ToList() .ForEach(x => x.IsActualInfo = false); } DataService.Add(organizationInfo); DataService.SaveChanges(); model.OrganizationInfoId = organizationInfo.Id; var organization = DataService.GetEntity <OrganizationExt>() .SingleOrDefault(x => x.Id == model.OrgUnitId); if (string.IsNullOrEmpty(model.EDRPOU)) { organization.INN = model.INN; } // Тут работал Макс // organization.EMail = model.EMail; appId = DataService.Add <PrlApplication>(model); await DataService.SaveChangesAsync(); } else { if (isBackOffice) { editModel.IsCreatedOnPortal = false; editModel.BackOfficeAppState = "Project"; } else { editModel.AppState = "Project"; editModel.IsCreatedOnPortal = true; } var organizationInfo = DataService.GetEntity <OrganizationInfo>() .SingleOrDefault(x => x.Id == editModel.OrganizationInfoId); organizationInfo.LegalFormType = editModel.LegalFormType; organizationInfo.OwnershipType = editModel.OwnershipType; organizationInfo.PhoneNumber = editModel.PhoneNumber; organizationInfo.FaxNumber = editModel.FaxNumber; organizationInfo.NationalAccount = editModel.NationalAccount; organizationInfo.InternationalAccount = editModel.InternationalAccount; organizationInfo.NationalBankRequisites = editModel.NationalBankRequisites; organizationInfo.InternationalBankRequisites = editModel.InternationalBankRequisites; organizationInfo.PassportSerial = editModel.PassportSerial; organizationInfo.PassportNumber = editModel.PassportNumber; organizationInfo.PassportDate = editModel.PassportDate; organizationInfo.PassportIssueUnit = editModel.PassportIssueUnit; organizationInfo.OrgDirector = editModel.OrgDirector; organizationInfo.AddressId = editModel.AddressId; organizationInfo.EMail = editModel.EMail; // Тут работал Макс // var organization = DataService.GetEntity<OrganizationExt>().SingleOrDefault(x => x.Id == editModel.OrgUnitId); // organization.EMail = editModel.EMail; appId = DataService.Add <PrlApplication>(editModel); await DataService.SaveChangesAsync(); } if (editModel.AppSort == "AdditionalInfoToLicense" && isNew) { var license = (await _limsExchangeService .GetLicenses("PRL", string.IsNullOrEmpty(editModel.EDRPOU) ? editModel.INN : editModel.EDRPOU)).FirstOrDefault(); if (license == null) { throw new Exception(); } foreach (var branchLicense in license.Branches) { var branch = new Branch { Id = Guid.NewGuid(), OrganizationId = editModel.OrgUnitId == Guid.Empty ? new Guid(userInfo?.OrganizationId()) : editModel.OrgUnitId, OldLimsId = branchLicense.Id, Name = branchLicense.Name }; var branchId = DataService.Add(branch, false); var appBranch = new ApplicationBranch() { LimsDocumentId = appId, BranchId = branchId }; DataService.Add(appBranch, false); await DataService.SaveChangesAsync(); } ; } return(appId); }
public static bool CreateAssembly(GithubPush payload, DateTime time) { var buildref = payload.Ref; string branch = buildref.Remove(0, 11); var asmBaseDir = Environment.GetEnvironmentVariable(AsmDirVar); var msbuildDir = Environment.GetEnvironmentVariable(AsmMSBuildVar); var gitPath = Environment.GetEnvironmentVariable(AsmGitVar); if (asmBaseDir == null || msbuildDir == null || gitPath == null) { return(false); } var asmWorkingDir = Path.Combine(asmBaseDir, "asmbuilds"); var asmStorageDir = Path.Combine(asmBaseDir, "downloads"); string pullDirectory = GetBuild(asmWorkingDir, branch, time, gitPath); if (pullDirectory == null) { return(false); } try { if (!CopyDependencies(asmWorkingDir, pullDirectory) || !CompileProgram(msbuildDir, pullDirectory, "Assembly", asmWorkingDir) || !CompileProgram(msbuildDir, pullDirectory, "AssemblyUpdateManager", asmWorkingDir) || !AddVersionInfo(pullDirectory, time, branch) || !CleanupLocalizations(pullDirectory) || !BuildPackage(pullDirectory, time, branch, asmStorageDir, "Assembly", "Assembly", false) || !BuildPackage(pullDirectory, time, branch, asmStorageDir, "Assembly", "AssemblyUpdateManager", true)) { return(false); } var changelog = payload.Created ? "Initial Commit" : ParseChangelog(pullDirectory, payload.Compare, gitPath); if (changelog == null) { return(false); } lock (typeof(AssemblyBuilder)) { using (var db = new DatabaseContext()) { var friendlyVersion = String.Format(time.ToString("yyyy.MM.dd.HH.mm.ss") + "-{0}", branch); var internalVersion = GetInternalVersion(pullDirectory); var repoTree = String.Format("{0}/tree/{1}", "Assembly", branch); var applicationBranch = db.ApplicationBranches.FirstOrDefault(b => b.Ref == buildref && b.Application.RepoName == "Assembly"); if (applicationBranch != null && (applicationBranch.InternalVersion == null || new Version(applicationBranch.InternalVersion).CompareTo(new Version(internalVersion)) < 0)) { var application = applicationBranch.Application; #if AZURE var buildLink = String.Format("https://xbcapi.blob.core.windows.net/assembly/{0}/builds/{1}.zip", branch, time.ToFileTimeUtc()); var updaterLink = String.Format("https://xbcapi.blob.core.windows.net/assembly/{0}/updaters/{1}.zip", branch, time.ToFileTimeUtc()); #else var buildLink = String.Format("http://tj.ngrok.com/downloads/{0}/{1}.zip", string.Format("{0}/tree/{1}/builds", "Assembly", branch), time.ToFileTimeUtc()); var updaterLink = String.Format("http://tj.ngrok.com/downloads/{0}/{1}.zip", string.Format("{0}/tree/{1}/updaters", "Assembly", branch), time.ToFileTimeUtc()); #endif var appBranch = new ApplicationBranch { Application = application, Name = branch, Ref = buildref, RepoTree = repoTree, BuildDownload = buildLink, UpdaterDownload = updaterLink, FriendlyVersion = friendlyVersion, InternalVersion = internalVersion, }; db.ApplicationBranches.AddOrUpdate(b => b.RepoTree, appBranch); db.SaveChanges(); } else { File.Delete(Path.Combine(asmStorageDir, "Assembly", "tree", branch, "builds", time.ToFileTimeUtc() + ".zip")); File.Delete(Path.Combine(asmStorageDir, "Assembly", "tree", branch, "updaters", time.ToFileTimeUtc() + ".zip")); } var changelogOwner = db.ApplicationBranches.FirstOrDefault(a => a.RepoTree == repoTree && a.Application.RepoName == "Assembly"); if (changelogOwner != null) { var changes = new Changelog() { Changes = changelog, FriendlyVersion = friendlyVersion, InternalVersion = internalVersion, Branch = changelogOwner }; db.Changelogs.AddOrUpdate(changes); db.SaveChanges(); } } } return(true); } finally { CleanupExtraZips(asmStorageDir, branch, "Assembly"); DirectoryUtility.DeleteDirectory(pullDirectory, true); } }