Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }