Files
Backend-Api/ServiceHost/Areas/Admin/Pages/Company/CrossJobGuild/Create.cshtml
2024-07-19 17:09:45 +03:30

471 lines
18 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@model CompanyManagment.App.Contracts.CrossJobGuild.CreateCrossJobGuild
@{
<style>
.select2-container {
width: 100% !important;
}
.modal-footer {
border-top: unset !important;
}
.modal .modal-dialog .modal-content .modal-footer {
padding-top: unset !important;
}
p {
direction: ltr !important;
text-align: right !important;
}
input[type=radio]:hover {
cursor: pointer;
}
.error {
font-size: 14px !important;
}
th {
text-align: center;
vertical-align: middle;
}
</style>
}
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<form asp-page="./Index" asp-page-handler="Create" id="workshops" autocomplete="off"
method="post"
data-ajax="true"
data-callback=""
data-action="Refresh"
enctype="multipart/form-data">
<div class="modal-body">
<div class="row">
<fieldset style="border: 1px solid #999797; border-radius: 10px; padding: revert">
<legend style="margin-bottom: 5px; font-size: large; border-bottom: 0px; color: #505458; width: 380px; text-align: center;">
ثبت مشاغل قیمت مقطوع سازمان تامین اجتماعی
</legend>
<div class="row">
<div class="col-md-2">
<div class="form-group">
<label asp-for="Year" class="control-label"> سال </label>
<input type="text" class="form-control" asp-for="Year" data-val="true" data-val-required="فیلد الزامی است">
<span asp-validation-for="Year" class="error"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label asp-for="Title" class="control-label"> عنوان صنف و درجه </label>
<input type="text" class="form-control" asp-for="Title" data-val="true" data-val-required="فیلد الزامی است">
<span asp-validation-for="Title" class="error"></span>
</div>
</div>
</div>
<div class="row">
<div class="col-md-2">
<label asp-for="EconomicCode" class="control-label"> کد اقتصادی </label>
</div>
</div>
<div class="row">
<div id="ecoList">
<div class="col-md-2">
<div class="form-group">
<input type="number" class="form-control" asp-for="economicCodeList[0]" maxlength="5"
data-val="true" data-val-required="فیلد الزامی است" data-val-number="فقط عدد وارد نمایید"
data-val-maxlength="بیشتر از 5 رقم مجاز نیست"
data-val-maxlength-max="5">
<span asp-validation-for="economicCodeList[0]" style="font-size: 10px !important; text-align: center"
class="error">
</span>
</div>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<button type="button" onclick="addrowEconomicCode()"
class="btn btn-sm btn-success btn-rounded waves-effect waves-light ">
+ افزودن
</button>
</div>
</div>
</div>
<table id="datatableCreate" class="table table-bordered">
<thead style="background-color:#a9fcff">
<tr>
<th style=" text-align: center; vertical-align: middle;" rowspan="2">#</th>
<th style=" font-size: 20px; text-align: center; vertical-align: middle" rowspan="2" colspan="1"> مشاغل </th>
<th style=" font-size: 20px; text-align: center; vertical-align: middle" colspan="2"> برای شهرهای کمتر از 500000 نفر </th>
<th style=" font-size: 20px; text-align: center; vertical-align: middle" colspan="3"> برای شهرهای بیشتر از 500000 نفر </th>
</tr>
<tr>
<th style=" font-size: 15px; text-align: center; vertical-align: middle"> به نسبت حداقل دستمزد </th>
<th style=" font-size: 15px; text-align: center; vertical-align: middle"> معادل ریالی </th>
<th style=" font-size: 15px; text-align: center; vertical-align: middle"> به نسبت حداقل دستمزد </th>
<th style=" font-size: 15px; text-align: center; vertical-align: middle" colspan="2"> معادل ریالی </th>
</tr>
</thead>
@{
var i = 0;
}
<tbody id="datatableTbody_@i">
<tr id="datatableTr">
<td style="font-size: 14px !important; text-align: center" class="order">
1
</td>
@{
var idstr = "crossJobsList_" + i + "__TitleStr";
var namestr = "crossJobsList[" + i + "].TitleStr";
var h = "textareacrossJobsList_" + i + "__Title";
var n = "textareacrossJobsList[" + i + "].Title";
var Listid = "crossJobsList_" + i + "__jobItems";
var ListName = "crossJobsList[" + i + "].jobItems";
}
<td style="font-size: 14px !important; text-align: right !important;width:240px !important;" class="crossJobssession">
<select id="@Listid" name="@ListName" asp-items="@Model.jobs" multiple="multiple" class="sel2">
<option value="0" disabled>شفل را انتخاب کنید</option>
</select>
</td>
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
<input type="text" class="form-control " asp-for="crossJobsList[i].SalaryRatioUnder" data-val="true" data-val-required="فیلد الزامی است">
<span asp-validation-for="crossJobsList[i].SalaryRatioUnder" class="error"></span>
</td>
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
<input type="text" class="form-control " asp-for="crossJobsList[i].EquivalentRialUnder" data-val="true" data-val-required="فیلد الزامی است">
<span asp-validation-for="crossJobsList[i].EquivalentRialUnder" class="error"></span>
</td>
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
<input type="text" class="form-control " asp-for="crossJobsList[i].SalaryRatioOver" data-val="true" data-val-required="فیلد الزامی است">
<span asp-validation-for="crossJobsList[i].SalaryRatioOver" class="error"></span>
</td>
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
<input type="text" class="form-control " asp-for="crossJobsList[i].EquivalentRialOver" data-val="true" data-val-required="فیلد الزامی است">
<span asp-validation-for="crossJobsList[i].EquivalentRialOver" class="error"></span>
</td>
<td style="font-size: 14px !important; text-align: center">
<div class="removeRow">
<i class="fa fa-minus-circle fa-2x" style="color: gray; cursor: pointer;"></i>
</div>
</td>
</tr>
</tbody>
</table>
<button type="button" onclick="addrowTable()" class="btn btn-sm btn-success btn-rounded waves-effect waves-light pull-left">افزودن +</button>
</fieldset>
</div>
</div>
<div class="modal-footer">
<button type="submit" id="createButtom" class="btn btn-success btn-rounded waves-effect waves-light">ذخیره</button>
<button type="button" class="btn btn-default btn-rounded waves-effect waves-light m-b-5" data-dismiss="modal">بستن</button>
</div>
</form>
</div>
<script type="text/javascript">
$(function() {
$("#crossJobsList_0__jobItems").select2({
placeholder: "انتخاب کنید",
dir: "rtl",
});
});
$(function() {
$("#jobslst_10").select2();
});
</script>
<script>
$(document).ready(function() {
$('.modal-dialog').addClass('modal-lg');
});
function addrowEconomicCode() {
const addNewEconomicCounter = $("#ecoList input[name^='economicCodeList']").length;
console.log(`Add row : ${addNewEconomicCounter}`);
const htmls = ` <div class="col-md-2">
<div class="form-group">
<input type="number" class="form-control" name="economicCodeList[${addNewEconomicCounter}]"
id="economicCodeList_${addNewEconomicCounter}_" maxlength="5"
data-val="true" data-val-required="فیلد الزامی است" data-val-number="فقط عدد وارد نمایید"
data-val-maxlength="بیشتر از 5 رقم مجاز نیست"
data-val-maxlength-max="5"
>
<span class="error " data-valmsg-for="economicCodeList[${addNewEconomicCounter}]"
style="font-size: 10px !important; text-align: center" data-valmsg-replace="true"></span>
</div>
</div>`;
$('#ecoList ').prepend(htmls);
}
function addrowTable() {
const addNewCrossJobCounter = $("#datatableCreate input[name$='.SalaryRatioUnder']").length;
console.log(`Add row : ${addNewCrossJobCounter}`);
const htmls = `
<tbody id="datatableTbody_${addNewCrossJobCounter}">
<tr >
<td style="font-size: 14px !important; text-align: center" class="order">
${addNewCrossJobCounter + 1}
</td>
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
<select id="jobslst_${addNewCrossJobCounter}" name="crossJobsList[${addNewCrossJobCounter}].jobItems" multiple="multiple" class="sel2">
<option value="0" disabled>شفل را انتخاب کنید</option>
</select>
</td>
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
<input type="text" class="form-control " data-val="true" data-val-required="فیلد الزامی است"
onchange="validDate(this,"crossJobsList_${addNewCrossJobCounter}__SalaryRatioUnder");
id="crossJobsList_${addNewCrossJobCounter}__SalaryRatioUnder" name="crossJobsList[${addNewCrossJobCounter}].SalaryRatioUnder">
<span class="error field-validation-valid" data-valmsg-for="crossJobsList[${addNewCrossJobCounter}].SalaryRatioUnder" data-valmsg-replace="true"></span>
</td>
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
<input type="text" class="form-control " data-val="true" data-val-required="فیلد الزامی است"
id="crossJobsList_${addNewCrossJobCounter}__EquivalentRialUnder" name="crossJobsList[${addNewCrossJobCounter}].EquivalentRialUnder">
<span class="error field-validation-valid" data-valmsg-for="crossJobsList[${addNewCrossJobCounter}].EquivalentRialUnder" data-valmsg-replace="true"></span>
</td>
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
<input type="text" class="form-control " data-val="true" data-val-required="فیلد الزامی است"
id="crossJobsList_${addNewCrossJobCounter}__SalaryRatioOver" name="crossJobsList[${addNewCrossJobCounter}].SalaryRatioOver">
<span class="error field-validation-valid" data-valmsg-for="crossJobsList[${addNewCrossJobCounter}].SalaryRatioOver" data-valmsg-replace="true"></span>
</td >
<td style="font-size: 14px !important; text-align: center" class="crossJobssession">
<input type="text" class="form-control" data-val="true" data-val-required="فیلد الزامی است"
id="crossJobsList_${addNewCrossJobCounter}__EquivalentRialOver" name="crossJobsList[${addNewCrossJobCounter}].EquivalentRialOver">
<span class="error field-validation-valid" data-valmsg-for="crossJobsList[${addNewCrossJobCounter}].EquivalentRialOver" data-valmsg-replace="true"></span>
</td >
<td style = "font-size: 14px !important; text-align: center; vertical-align: middle" >
<div class="removeRow" onclick="removeRowCrossJob('datatableTbody_${addNewCrossJobCounter}');">
<i class="fa fa-minus-circle fa-2x" style="color: red; cursor: pointer;"></i>
</div>
</td >
</tr>
</tbody>`;
$('#datatableCreate ').append(htmls);
select(addNewCrossJobCounter);
}
var jobs;
function select(id) {
getJob(id);
$(`#jobslst_${id}`).select2({
placeholder: "انتخاب کنید",
dir: "rtl",
});
}
function getJob(id) {
$.ajax({
dataType: 'json',
type: 'Get',
url: '@Url.Page("./Index", "Job")',
headers: { "RequestVerificationToken": $('@Html.AntiForgeryToken()').val() },
success: function(response) {
jobs = response;
for (let i = 0; i < jobs.length; i++) {
$(`#jobslst_${id}`).append(`<option value=${jobs[i].id}>${jobs[i].jobName}</option>`);
}
},
failure: function(response) {
console.log(5, response);
$.Notification.autoHideNotify('error', 'top center', 'پیام سیستم ', response.message);
}
});
}
function addToTitle(id) {
const text = document.getElementById(`crossJobsList_${id}__TitleStr`).value;
//var text = document.getElementById('crossJobsList_Title_' + id).value;
if (text == '') {
return;
}
$(`#crossJobsList_${id}__Title`).val($(`#crossJobsList_${id}__Title`).val() + '-' + text);
const oldval = $(`#crossJobsList_${id}__Title`).val();
$(`#textareacrossJobsList_${id}__Title`).val(oldval.trim());
document.getElementById(`crossJobsList_${id}__TitleStr`).value = '';
}
function getInputSelection(el) {
var start = 0,
end = 0,
normalizedValue,
range,
textInputRange,
len,
endRange;
if (typeof el.selectionStart == "number" && typeof el.selectionEnd == "number") {
start = el.selectionStart;
end = el.selectionEnd;
} else {
range = document.selection.createRange();
if (range && range.parentElement() == el) {
len = el.value.length;
normalizedValue = el.value.replace(/\r\n/g, "\n");
// Create a working TextRange that lives only in the input
textInputRange = el.createTextRange();
textInputRange.moveToBookmark(range.getBookmark());
// Check if the start and end of the selection are at the very end
// of the input, since moveStart/moveEnd doesn't return what we want
// in those cases
endRange = el.createTextRange();
endRange.collapse(false);
if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
start = end = len;
} else {
start = -textInputRange.moveStart("character", -len);
start += normalizedValue.slice(0, start).split("\n").length - 1;
if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) {
end = len;
} else {
end = -textInputRange.moveEnd("character", -len);
end += normalizedValue.slice(0, end).split("\n").length - 1;
}
}
}
}
return {
start: start,
end: end
};
}
function replaceSelectedText(el, text) {
const sel = getInputSelection(el);
const val = el.value;
const selected = val.slice(sel.start, sel.end);
var arr = [];
arr = val.split('-');
var str = "";
for (let i = 0; i < arr.length; i++) {
if (arr[i] == selected) {
arr[i] = '';
}
if (arr[i] !== '') {
str += `-${arr[i]}`;
}
}
el.value = str;
}
function selectedText(id) {
const el = document.getElementById(`textareacrossJobsList_${id}__Title`);
replaceSelectedText(el, "");
}
function removeRowCrossJob(className) {
const list = document.getElementById(className);
const lst = list.value;
list.remove();
const unit = $("#datatableCreate").parent().find('input').length;
$('td.order').text(function(i) {
return i + 1;
});
className = "crossJobssession";
const id = "datatableCreate"; // "crossJobsList";
sortInputs(id, className, 5);
}
function sortInputs(id, className, unit) {
var PSInput = $(`#${id} .${className} input`);
for (var i = 0; i < PSInput.length; i++) {
try {
var split_0 = $(PSInput[i]).attr('name').split('[');
var split_1 = split_0[0];
var split_2 = split_0[1];
var split_2 = split_2.split(']');
var split_2 = split_2[1];
var split_00 = $(PSInput[i]).attr('id').split('_');
var split_11 = split_00[0];
var split_22 = split_00[3];
$(PSInput[i]).attr('name', split_1 + "[" + Math.floor(i / unit) + "]" + split_2);
$(PSInput[i]).next('span').attr('name', split_1 + "[" + Math.floor(i / unit) + "]" + split_2);
$(PSInput[i]).next('span').attr('data-valmsg-for', split_1 + "[" + Math.floor(i / unit) + "]" + split_2);
$(PSInput[i]).attr('id', split_11 + "_" + Math.floor(i / unit) + "__" + split_22);
$(PSInput[i]).prev('label').attr('for', split_11 + "_" + Math.floor(i / unit) + "__" + split_22);
} catch (e) {
}
}
var PSButton = $(`#${id} button`);
for (var i = 0; i < PSButton.length; i++) {
$(PSButton[i]).attr("onclick", `addToTitle(${i})`);
}
var PSTbody = $(`#${id} Tbody`);
for (var i = 0; i < PSTbody.length; i++) {
$(PSTbody[i]).attr("id", `datatableTbody_${i}`);
}
var PSSelect2 = $(".sel2");
for (var i = 0; i < PSSelect2.length; i++) {
$(PSSelect2[i]).attr("id", `crossJobsList_${i}__jobItems`);
$(PSSelect2[i]).attr("data-select2-id", `crossJobsList_${i}__jobItems`);
$(PSSelect2[i]).attr("name", `crossJobsList[${i}].jobItems`);
}
var PSRemove = $(`#${id} .removeRow`);
for (var i = 0; i < PSRemove.length; i++) {
$(PSRemove[i]).attr("onclick", `removeRowCrossJob('datatableTbody_${i + 1}')`);
}
}
function validDate(inputField, id) {
if (inputField.value != '') {
validCheck = true;
$(`#${id}`).val("فیلد الزامی است");
} else {
validCheck = false;
$(`#${id}`).val();
}
}
</script>