Commit 1bfa0ee1 authored by Boril Kolev's avatar Boril Kolev
Browse files

Merge branch 'MediationPortal_v1' into 'master'

Mediation Portal - Source code

See merge request !4
parents f3ed7e49 bb84ed57
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings">
<TelemetryInitializers>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.HttpDependenciesParsingTelemetryInitializer, Microsoft.AI.DependencyCollector"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.AzureWebAppRoleEnvironmentTelemetryInitializer, Microsoft.AI.WindowsServer"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.BuildInfoConfigComponentVersionTelemetryInitializer, Microsoft.AI.WindowsServer"/>
<Add Type="Microsoft.ApplicationInsights.Web.WebTestTelemetryInitializer, Microsoft.AI.Web"/>
<Add Type="Microsoft.ApplicationInsights.Web.SyntheticUserAgentTelemetryInitializer, Microsoft.AI.Web">
<!-- Extended list of bots:
search|spider|crawl|Bot|Monitor|BrowserMob|BingPreview|PagePeeker|WebThumb|URL2PNG|ZooShot|GomezA|Google SketchUp|Read Later|KTXN|KHTE|Keynote|Pingdom|AlwaysOn|zao|borg|oegp|silk|Xenu|zeal|NING|htdig|lycos|slurp|teoma|voila|yahoo|Sogou|CiBra|Nutch|Java|JNLP|Daumoa|Genieo|ichiro|larbin|pompos|Scrapy|snappy|speedy|vortex|favicon|indexer|Riddler|scooter|scraper|scrubby|WhatWeb|WinHTTP|voyager|archiver|Icarus6j|mogimogi|Netvibes|altavista|charlotte|findlinks|Retreiver|TLSProber|WordPress|wsr-agent|http client|Python-urllib|AppEngine-Google|semanticdiscovery|facebookexternalhit|web/snippet|Google-HTTP-Java-Client-->
<Filters>search|spider|crawl|Bot|Monitor|AlwaysOn</Filters>
</Add>
<Add Type="Microsoft.ApplicationInsights.Web.ClientIpHeaderTelemetryInitializer, Microsoft.AI.Web"/>
<Add Type="Microsoft.ApplicationInsights.Web.OperationNameTelemetryInitializer, Microsoft.AI.Web"/>
<Add Type="Microsoft.ApplicationInsights.Web.OperationCorrelationTelemetryInitializer, Microsoft.AI.Web"/>
<Add Type="Microsoft.ApplicationInsights.Web.UserTelemetryInitializer, Microsoft.AI.Web"/>
<Add Type="Microsoft.ApplicationInsights.Web.AuthenticatedUserIdTelemetryInitializer, Microsoft.AI.Web"/>
<Add Type="Microsoft.ApplicationInsights.Web.AccountIdTelemetryInitializer, Microsoft.AI.Web"/>
<Add Type="Microsoft.ApplicationInsights.Web.SessionTelemetryInitializer, Microsoft.AI.Web"/>
</TelemetryInitializers>
<TelemetryModules>
<Add Type="Microsoft.ApplicationInsights.DependencyCollector.DependencyTrackingTelemetryModule, Microsoft.AI.DependencyCollector">
<ExcludeComponentCorrelationHttpHeadersOnDomains>
<!--
Requests to the following hostnames will not be modified by adding correlation headers.
Add entries here to exclude additional hostnames.
NOTE: this configuration will be lost upon NuGet upgrade.
-->
<Add>core.windows.net</Add>
<Add>core.chinacloudapi.cn</Add>
<Add>core.cloudapi.de</Add>
<Add>core.usgovcloudapi.net</Add>
<Add>localhost</Add>
<Add>127.0.0.1</Add>
</ExcludeComponentCorrelationHttpHeadersOnDomains>
<IncludeDiagnosticSourceActivities>
<Add>Microsoft.Azure.EventHubs</Add>
<Add>Microsoft.Azure.ServiceBus</Add>
</IncludeDiagnosticSourceActivities>
</Add>
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.PerformanceCollectorModule, Microsoft.AI.PerfCounterCollector">
<!--
Use the following syntax here to collect additional performance counters:
<Counters>
<Add PerformanceCounter="\Process(??APP_WIN32_PROC??)\Handle Count" ReportAs="Process handle count" />
...
</Counters>
PerformanceCounter must be either \CategoryName(InstanceName)\CounterName or \CategoryName\CounterName
NOTE: performance counters configuration will be lost upon NuGet upgrade.
The following placeholders are supported as InstanceName:
??APP_WIN32_PROC?? - instance name of the application process for Win32 counters.
??APP_W3SVC_PROC?? - instance name of the application IIS worker process for IIS/ASP.NET counters.
??APP_CLR_PROC?? - instance name of the application CLR process for .NET counters.
-->
</Add>
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryModule, Microsoft.AI.PerfCounterCollector"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.DeveloperModeWithDebuggerAttachedTelemetryModule, Microsoft.AI.WindowsServer"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.UnhandledExceptionTelemetryModule, Microsoft.AI.WindowsServer"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.UnobservedExceptionTelemetryModule, Microsoft.AI.WindowsServer">
<!--</Add>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.FirstChanceExceptionStatisticsTelemetryModule, Microsoft.AI.WindowsServer">-->
</Add>
<Add Type="Microsoft.ApplicationInsights.Web.RequestTrackingTelemetryModule, Microsoft.AI.Web">
<Handlers>
<!--
Add entries here to filter out additional handlers:
NOTE: handler configuration will be lost upon NuGet upgrade.
-->
<Add>Microsoft.VisualStudio.Web.PageInspector.Runtime.Tracing.RequestDataHttpHandler</Add>
<Add>System.Web.StaticFileHandler</Add>
<Add>System.Web.Handlers.AssemblyResourceLoader</Add>
<Add>System.Web.Optimization.BundleHandler</Add>
<Add>System.Web.Script.Services.ScriptHandlerFactory</Add>
<Add>System.Web.Handlers.TraceHandler</Add>
<Add>System.Web.Services.Discovery.DiscoveryRequestHandler</Add>
<Add>System.Web.HttpDebugHandler</Add>
</Handlers>
</Add>
<Add Type="Microsoft.ApplicationInsights.Web.ExceptionTrackingTelemetryModule, Microsoft.AI.Web"/>
<Add Type="Microsoft.ApplicationInsights.Web.AspNetDiagnosticTelemetryModule, Microsoft.AI.Web"/>
</TelemetryModules>
<TelemetryProcessors>
<Add Type="Microsoft.ApplicationInsights.Extensibility.PerfCounterCollector.QuickPulse.QuickPulseTelemetryProcessor, Microsoft.AI.PerfCounterCollector"/>
<Add Type="Microsoft.ApplicationInsights.Extensibility.AutocollectedMetricsExtractor, Microsoft.ApplicationInsights"/>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
<ExcludedTypes>Event</ExcludedTypes>
</Add>
<Add Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.AdaptiveSamplingTelemetryProcessor, Microsoft.AI.ServerTelemetryChannel">
<MaxTelemetryItemsPerSecond>5</MaxTelemetryItemsPerSecond>
<IncludedTypes>Event</IncludedTypes>
</Add>
</TelemetryProcessors>
<TelemetryChannel Type="Microsoft.ApplicationInsights.WindowsServer.TelemetryChannel.ServerTelemetryChannel, Microsoft.AI.ServerTelemetryChannel"/>
<!--
Learn more about Application Insights configuration with ApplicationInsights.config here:
http://go.microsoft.com/fwlink/?LinkID=513840
Note: If not present, please add <InstrumentationKey>Your Key</InstrumentationKey> to the top of this file.
--></ApplicationInsights>
\ No newline at end of file
@{
ViewBag.Title = "Темплейти на документи";
}
<h2>Темплейти на документи</h2>
<br />
<document-templates inline-template ref="documentTemplates">
<template v-if="loading">
<v-text-field color="primary"
loading
label="Зареждане..."
disabled>
</v-text-field>
</template>
<template v-else>
<v-row>
<v-col cols="12">
<v-data-table :headers="table.tableHeader"
:items="table.data"
item-key="GUID"
id="result-datatable"
class="elevation-1"
no-data-text="Няма намерени резултати"
:loading="table.loading"
loading-text="Зареждане на данни"
:items-per-page="table.selectedItemsPerPage"
hide-default-footer>
<template v-slot:item="{ item }">
<tr class="cursor-pointer">
<td>{{ item.FileName }}</td>
<td align="right">
<v-btn :loading="table.loading"
color="blue-grey darken-1"
dark
small
target="_blank"
:href="'/AttachedDocument/DownloadFile/' + item.GUID">
<v-icon left>mdi-download</v-icon>
Свали&nbsp;
</v-btn>
<v-btn :loading="table.loading"
color="primary"
small
@@click="editTemplate(item.GUID)">
<v-icon left>mdi-file-document-edit-outline</v-icon>
Редакция&nbsp;
</v-btn>
</td>
</tr>
</template>
</v-data-table>
<v-dialog v-model="dialog.open" scrollable persistent max-width="50%">
<v-card>
<v-card-title class="headline primary" style="color: white">
Редакция на темплейт "{{ dialog.title }}"
</v-card-title>
<v-card-text class="pa-8">
<v-container>
<v-col>
<v-col cols="12">
<v-file-input v-model="dialog.data.document"
:label="'Прикачете темплейт за '+dialog.title"
accept=".docx"
show-size
counter
multiple>
</v-file-input>
</v-col>
</v-col>
</v-container>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn :loading="this.dialog.loading"
dark
color="success darken-1"
@@click="doEdit">
<v-icon left>mdi-check</v-icon>
Запази
</v-btn>
<v-btn :loading="this.dialog.loading"
color="default darken-1"
@@click="dialog.open = !dialog.open">
<v-icon left>mdi-close</v-icon>
Затвори
</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</v-col>
</v-row>
</template>
</document-templates>
@section Scripts {
@* Models *@
@* Components *@
@Scripts.Render("~/Scripts/VueComponents/documentTemplates.js")
}
\ No newline at end of file
@{
ViewBag.Title = "Начало";
}
<h2>Начало</h2>
<br />
<v-app>
home
</v-app>
\ No newline at end of file
@{
ViewBag.Title = "Медиатори";
}
<v-app>
<admin-mediators-list inline-template v-bind:for-mediation="false" ref="adminMediatorsList">
<div id="searchmediator">
<template v-if="loading">
<v-text-field loading
label="Зареждане..."
disabled>
</v-text-field>
</template>
<template v-else>
<v-container>
<v-row>
<v-col cols="12">
<v-sheet elevation="3">
<v-tabs align-with-title :show-arrows="true">
<v-tabs-slider color="primary"></v-tabs-slider>
<v-tab ripple centered class="black--text">
Основна информация
</v-tab>
<v-tab ripple centered class="black--text">
Контакти
</v-tab>
<v-tab ripple centered class="black--text">
Образование
</v-tab>
@* By General Information *@
<v-tab-item>
@Html.Partial("_SearchBasicInformation")
</v-tab-item>
@* By Contacts *@
<v-tab-item>
@Html.Partial("~/Areas/Register/Views/Mediators/_SearchByContactsView.cshtml")
</v-tab-item>
@* By Education *@
<v-tab-item>
@Html.Partial("~/Areas/Register/Views/Mediators/_SearchByEducationView.cshtml")
</v-tab-item>
</v-tabs>
</v-sheet>
</v-col>
</v-row>
<template>
<v-row>
<v-col cols="12">
@Html.Partial("_SearchResultDataTableView")
</v-col>
</v-row>
</template>
</v-container>
</template>
</div>
</admin-mediators-list>
</v-app>
@section Scripts {
@* Models *@
@Scripts.Render("~/JSModels/FormFilingClasses/FullAddress.js")
@Scripts.Render("~/JSModels/FormFilingClasses/Contact.js")
@Scripts.Render("~/JSModels/FormFilingClasses/Education.js")
@Scripts.Render("~/JSModels/SearchMediators/MediatorFiltersByAdmin.js")
@* Components *@
@Scripts.Render("~/Scripts/VueComponents/admin_mediators.js")
}
\ No newline at end of file
<v-container>
<v-row>
<v-col cols="12" md="4" sm="12">
<v-text-field class="pa-4"
append-icon="search"
label="Имена"
v-model="MediatorFilters.FullName"
clearable
color="primary">
</v-text-field>
</v-col>
<v-col cols="12" md="4" sm="12">
<v-text-field class="pa-4"
append-icon="search"
label="ЕГН или ЛНЧ"
v-model="MediatorFilters.EGN"
clearable
color="primary">
</v-text-field>
</v-col>
<v-col cols="12" md="4" sm="12">
<v-text-field class="pa-4"
append-icon="search"
label="Регистрационен номер"
v-model="MediatorFilters.RegistrationNumber"
clearable
color="primary">
</v-text-field>
</v-col>
</v-row>
<v-row v-if="!forMediation">
<v-col cols="12" md="2" sm="12">
<v-autocomplete class="pa-4"
label="Статус"
color="primary"
clearable
v-bind:items="mediatorStatuses"
item-text="Value"
item-value="Key"
placeholder="-- Избери --"
no-data-text="Няма данни"
v-model="MediatorFilters.MediatorStatus">
</v-autocomplete>
</v-col>
<v-col cols="12" md="8" sm="12">
<v-autocomplete class="pa-4"
label="Обучителна организация"
color="primary"
clearable
v-bind:items="organizations"
item-text="Value"
item-value="Key"
placeholder="-- Избери --"
no-data-text="Няма данни"
v-model="MediatorFilters.OrganizationMembership">
</v-autocomplete>
</v-col>
<v-col cols="12" md="2" sm="12">
<v-autocomplete class="pa-4"
label="Деловоден номер"
color="primary"
clearable
v-bind:items="incomingNumber"
item-text="Value"
item-value="Key"
placeholder="-- Избери --"
no-data-text="Няма данни"
v-model="MediatorFilters.HasIncomingNumber">
</v-autocomplete>
</v-col>
</v-row>
<v-row>
<v-col cols="12" md="6" sm="12">
<v-menu v-bind:close-on-content-click="false"
v-bind:nudge-right="40"
transition="scale-transition"
offset-y>
<template v-slot:activator="{ on }">
<v-text-field autocomplete="off"
label="Регистриран от"
prepend-icon="event"
v-on="on"
v-bind:value="formatDate(MediatorFilters.DateCreatedFrom)"
@@click:clear="onClearDateCreatedFrom()"
clearable
color="primary"
class="pa-4">
</v-text-field>
</template>
<v-date-picker v-model="MediatorFilters.DateCreatedFrom"
persistent-hint
prepend-icon="event"
header-color="primary"
color="primary"
no-title
v-bind:first-day-of-week="1"
locale="bg-bg">
</v-date-picker>
</v-menu>
</v-col>
<v-col cols="12" md="6" sm="12">
<v-menu v-bind:close-on-content-click="false"
v-bind:nudge-right="40"
transition="scale-transition"
offset-y>
<template v-slot:activator="{ on }">
<v-text-field autocomplete="off"
label="Регистриран до"
prepend-icon="event"
v-on="on"
v-bind:value="formatDate(MediatorFilters.DateCreatedTo)"
@@click:clear="onClearDateCreatedTo()"
clearable
color="primary"
class="pa-4">
</v-text-field>
</template>
<v-date-picker v-model="MediatorFilters.DateCreatedTo"
persistent-hint
prepend-icon="event"
header-color="primary"
color="primary"
no-title
v-bind:first-day-of-week="1"
locale="bg-bg">
</v-date-picker>
</v-menu>
</v-col>
</v-row>
<v-row class="px-4">
<v-col cols="12">
<v-btn block color="primary"
v-on:click="triggerSearch">
Търсене&nbsp;&nbsp;
<i class="fa fa-filter"></i>
</v-btn>
</v-col>
</v-row>
</v-container>
\ No newline at end of file
<v-card width="100%">
<v-data-table :headers="getHeaders()"
:items="mediators"
item-key="MediatorGUID"
class="elevation-1"
hide-default-footer
no-data-text="Няма намерени резултати"
:disable-sort="true"
:loading="loadingTableData"
loading-text="Зареждане на данни"
:items-per-page="selectedItemsPerPage">
<template v-slot:item="props">
<tr class="cursor-pointer">
<td @@click="props.expanded = !props.expanded">{{ props.item.FirstName + ' '+props.item.LastName }}</td>
<td @@click="props.expanded = !props.expanded">{{ props.item.RegistrationNumber }}</td>
<td v-if="!forAdditionalMediator" @@click="props.expanded = !props.expanded">{{ props.item.StatusName }}</td>
<td v-if="!forAdditionalMediator" @@click="props.expanded = !props.expanded">{{ props.item.DateCreated }}</td>
<td v-if="!forAdditionalMediator" @@click="props.expanded = !props.expanded">{{ props.item.IncomingNumber || '-'}}</td>
<td v-if="forAdditionalMediator" @@click="props.expanded = !props.expanded" class="py-1"><v-chip label small color="primary" class="mr-1 mb-1" v-for="lang in props.item.ForeignLanguages" :key="lang">{{ lang }}</v-chip></td>
<td v-if="forAdditionalMediator" @@click="props.expanded = !props.expanded" class="py-1"><v-chip label small color="primary" class="mr-1 mb-1" v-for="prof in props.item.Professions" :key="prof">{{ prof }}</v-chip></td>
<td v-if="!forAdditionalMediator && false" @@click="props.expanded = !props.expanded">{{ props.item.MediatorContacts.MobilePhone || '-' }}</td>
<td v-if="!forAdditionalMediator && false" @@click="props.expanded = !props.expanded">{{ props.item.MediatorContacts.Fax || '-'}}</td>
<td v-if="false" @@click="props.expanded = !props.expanded">{{ props.item.MediatorContacts.Email || '-'}}</td>
<td align="right" class="px-2">
<div class="my-2">
<v-btn small
color="primary"
:href="'/Administration/MediatorsForAdmins/Edit/' + props.item.MediatorGUID"
target="_blank">
Преглед
</v-btn>
</div>
</td>
</tr>
</template>
</v-data-table>
<v-footer style="background-color: white !important">
<v-spacer></v-spacer>
<v-col md="2">
<v-select :items="itemsPerPage"
v-model="selectedItemsPerPage"
item-text="Value"
item-value="Key"
placeholder="-- Избери --"
label="Редове на страница"
color="primary"
@@change="setRows(selectedItemsPerPage)">
</v-select>
</v-col>
</v-footer>
<template>
<div class="text-xs-center pa-4">
<v-pagination v-model="pagination.page"
:length="pagination.totalPages"
color="primary"
total-visible="10"
@@input="next(pagination.page)">
</v-pagination>
</div>
</template>
</v-card>
\ No newline at end of file
@{
ViewBag.Title = "Номенклатури";
}
<h2>Номенклатури</h2>
<br />
<v-app>
<nomenclature-tabs inline-template ref="nomenclatureTabs">
<template v-if="loading">
<v-text-field color="primary"
loading
label="Зареждане..."
disabled>
</v-text-field>
</template>
<template v-else>
<div class="application-form">
<v-tabs color="primary" v-model="currentTab" center-active>
<v-tabs-slider color="primary"></v-tabs-slider>
@* Forms and documents Tab *@
<v-tab ripple centered @@click="currentTab = 0">
@* <-- Custom non-generic tab *@
Форми и документи
</v-tab>
@* Professional directions *@
<v-tab ripple centered @@click="currentTab = 1">
@* <-- Custom non-generic tab *@
Професионални направления
</v-tab>
@* Professional directions *@
<v-tab ripple centered @@click="currentTab = 2">
@* <-- Custom non-generic tab *@
Секция
</v-tab>
@* Dynamic Tabs *@
<v-tab v-for="(h, index) in nomenclatureHeaders" :key="index+2" ripple centered @@click="currentTab = index+3">
@* <-- Generic tabs generated from DB *@
{{h.TitleToBeDisplayed}}
</v-tab>
</v-tabs>
<v-tabs-items v-model="currentTab">
@* Tabs content *@
<v-tab-item :key="0">
@* <-- Custom non-generic tab content *@
<required-form-attachment-type inline-template ref="requiredFormAttachmentType">
<v-container>
<template v-if="loadingItems">
<v-text-field color="primary"
loading
label="Зареждане..."
disabled>
</v-text-field>
</template>
<template v-else>
<v-row>
<v-col cols="12" md="6" xs="12">
<v-text-field label="Форма"
disabled>
</v-text-field>
</v-col>
<v-col cols="12" md="6" xs="12">
<v-text-field label="Документи"
disabled>
</v-text-field>
</v-col>
</v-row>
<hr />
<v-row row wrap v-for="(model, index) in container" :key="index">
<v-col cols="12" md="6" xs="12">
<v-textarea v-model="model.FormTypeName"
readonly
rows="1"
auto-grow>
</v-textarea>
</v-col>
<v-col cols="12" md="6" xs="12">
<v-autocomplete class="px-4"
v-bind:items="attachedDocumentTypes"
v-model="model.RequiredDocuments"
item-text="Value"
item-value="Key"
color="primary"
:menu-props="{ offsetY: true }"