367 lines
16 KiB
Plaintext
367 lines
16 KiB
Plaintext
@using EnVisage.Code
|
|
@using EnVisage.Code.HtmlHelpers
|
|
|
|
@model EnVisage.Models.PeopleResourceModel
|
|
|
|
@{
|
|
ViewBag.Title = "People Resource Details";
|
|
}
|
|
|
|
<script type="text/javascript">
|
|
|
|
var multik;
|
|
var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
var multik1;
|
|
|
|
init.push(function () {
|
|
$('input#@Html.ClientIdFor(x => x.IsActiveEmployee)').switcher({
|
|
on_state_content: 'Active',
|
|
off_state_content: 'Inactive'
|
|
});
|
|
$('input#@Html.ClientIdFor(x => x.IsActiveEmployee)').parent().css("width", "80px");
|
|
$('.datepicker').datepicker();
|
|
|
|
initTrainings();
|
|
});
|
|
|
|
function loadTraining(trainingId, resourceId)
|
|
{
|
|
if (trainingId.length > 0)
|
|
StartEdit('Trainings', trainingId, null, null, 'erorMsgPlaceholder');
|
|
var url = trainingId.length > 0 ? "?Id=" + trainingId + "&resourceId=" + resourceId : "?resourceId=" + resourceId;
|
|
$('#trainingReload').load('@Url.Action("LoadTraining", "PeopleResource")' + url, function () {
|
|
initTrainings();
|
|
$('#editScheduleTraining').on('hidden.bs.modal', function () {
|
|
if (trainingId.length > 0) {
|
|
StopEdit();
|
|
RemoveLock('Trainings', trainingId);
|
|
}
|
|
}).modal('show');
|
|
});
|
|
}
|
|
|
|
function editTraining(aId, trainingId) {
|
|
if (!CheckLock(aId, 'Trainings', trainingId))
|
|
return false;
|
|
loadTraining(trainingId, '@Model.Id');
|
|
return true;
|
|
}
|
|
|
|
function deleteTraining(aId, trainingId) {
|
|
if (!CheckLock(aId, 'Trainings', trainingId))
|
|
return false;
|
|
if (trainingId.length > 0)
|
|
StartEdit('Trainings', trainingId, null, null, 'erorMsgPlaceholder');
|
|
$("#deleteTrainingId").val(trainingId);
|
|
$('#modal-warning').on('hidden.bs.modal', function () {
|
|
if (trainingId.length > 0) {
|
|
StopEdit();
|
|
RemoveLock('Trainings', trainingId);
|
|
}
|
|
}).modal('show');
|
|
return true;
|
|
}
|
|
|
|
|
|
function toggleTeamListView(element) {
|
|
$(element).parent().children('div.teamsList').toggle(100, function () {
|
|
if ($(this).parent().children('div.header').children('i.icon').hasClass('fa-caret-right')) {
|
|
$(this).parent().children('div.header').children('i.icon').removeClass('fa-caret-right');
|
|
$(this).parent().children('div.header').children('i.icon').addClass('fa-caret-down');
|
|
} else {
|
|
$(this).parent().children('div.header').children('i.icon').removeClass('fa-caret-down');
|
|
$(this).parent().children('div.header').children('i.icon').addClass('fa-caret-right');
|
|
}
|
|
});
|
|
}
|
|
|
|
</script>
|
|
|
|
<div id="erorMsgPlaceholder"></div>
|
|
|
|
<div class="panel widget-messages-alt" id="information">
|
|
<div class="panel-heading">
|
|
<span class="panel-title ui-expander">
|
|
<a data-toggle="collapse" data-target="#panelInfo">
|
|
<i class="panel-title-icon fa fa-info"></i>People Resource Information
|
|
</a>
|
|
</span>
|
|
</div>
|
|
<div id="panelInfo" class="panel-collapse collapse in">
|
|
<div class="panel-body padding-sm">
|
|
<div class="messages-list">
|
|
<div class="form-group">
|
|
@Html.LabelFor(model => model.FirstName, new { @class = "col-sm-2 control-label" })
|
|
<div class="col-sm-10">
|
|
@Html.TextBoxFor(model => model.FirstName, new { @class = "form-control", @readonly = "true" })
|
|
@Html.ValidationMessageFor(model => model.FirstName)
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
@Html.LabelFor(model => model.LastName, new { @class = "col-sm-2 control-label" })
|
|
<div class="col-sm-10">
|
|
@Html.TextBoxFor(model => model.LastName, new { @class = "form-control", @readonly = "true" })
|
|
@Html.ValidationMessageFor(model => model.LastName)
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
@Html.LabelFor(model => model.IsActiveEmployee, new { @class = "col-sm-2 control-label" })
|
|
<div class="col-sm-10">
|
|
@Html.CheckBoxFor(model => model.IsActiveEmployee, new { @class = "switcher-disabled-default", @disabled = "disabled" })
|
|
@Html.ValidationMessageFor(model => model.IsActiveEmployee)
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
@Html.LabelFor(model => model.StartDate, new { @class = "col-sm-2 control-label" })
|
|
<div class="col-sm-10">
|
|
@Html.EditorFor(model => model.StartDate, new { @class = "form-control", @Disabled = true })
|
|
@Html.ValidationMessageFor(model => model.StartDate)
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
@Html.LabelFor(model => model.EndDate, new { @class = "col-sm-2 control-label" })
|
|
<div class="col-sm-10">
|
|
@Html.EditorFor(model => model.EndDate, new { @class = "form-control", @Disabled = true })
|
|
@Html.ValidationMessageFor(model => model.EndDate)
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div>
|
|
<fieldset id="fsTeams">
|
|
<div class="form-group">
|
|
<label class="col col-sm-2 control-label">Team</label>
|
|
<div class="col col-sm-10 teamsList">
|
|
<label class="control-label">@Model.Team.Name</label>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
<div>
|
|
<fieldset id="fsExpenditures">
|
|
<div class="form-group">
|
|
<label class="col col-sm-2 control-label">Expenditure</label>
|
|
<div class="col col-sm-10 teamsList">
|
|
<span>@Model.ExpenditureCategory.Expenditure.Name</span>
|
|
</div>
|
|
</div>
|
|
</fieldset>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="panel widget-messages-alt" id="skills">
|
|
<div class="panel-heading">
|
|
<span class="panel-title ui-expander">
|
|
<a data-toggle="collapse" data-target="#panelSkills" class="collapsed">
|
|
<i class="panel-title-icon fa fa-laptop"></i>Resource Skills
|
|
</a>
|
|
</span>
|
|
</div>
|
|
<div id="panelSkills" class="panel-collapse collapse">
|
|
<div class="panel-body padding-sm">
|
|
<div class="messages-list">
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel widget-messages-alt" id="time">
|
|
<div class="panel-heading">
|
|
<span class="panel-title ui-expander">
|
|
<a data-toggle="collapse" data-target="#panelTime" class="collapsed">
|
|
<i class="panel-title-icon fa fa-clock-o"></i>Resource Time
|
|
</a>
|
|
</span>
|
|
</div>
|
|
<div id="panelTime" class="panel-collapse collapse">
|
|
<div class="panel-body padding-sm">
|
|
<div class="messages-list">
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel widget-messages-alt" id="vacation">
|
|
<div class="panel-heading">
|
|
<span class="panel-title ui-expander">
|
|
<a data-toggle="collapse" data-target="#panelVacation" class="collapsed">
|
|
<i class="panel-title-icon fa fa-beer"></i>Vacation Schedule
|
|
</a>
|
|
</span>
|
|
</div>
|
|
<div id="panelVacation" class="panel-collapse collapse">
|
|
<div class="panel-body padding-sm">
|
|
@if(Html.CheckSecurityObjectPermission(Areas.Vacations, AccessLevel.Write))
|
|
{
|
|
<a class="btn btn-primary" style="margin-bottom: 10px;" href='@Url.Action("EditVacation", "PeopleResource", new {peopleResourceId=Model.Id})'>Add Vacation</a>
|
|
}
|
|
@if (Html.CheckSecurityObjectPermission(Areas.Vacations, AccessLevel.Read))
|
|
{
|
|
<div class="messages-list table-light no-margin">
|
|
<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered" id="tblVacations" style="margin-bottom: 25px;">
|
|
<thead>
|
|
<tr>
|
|
<th>Start Date</th>
|
|
<th>End Date</th>
|
|
<th>Duration</th>
|
|
<th>Hours Available</th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var vacation in Model.Vacations)
|
|
{
|
|
<tr>
|
|
<td>@vacation.StartDate.Value.ToShortDateString()</td>
|
|
<td>@vacation.EndDate.Value.ToShortDateString()</td>
|
|
<td>@(vacation.Duration) days</td>
|
|
<td>@((int) (vacation.UOMValue*vacation.PeopleResourceVacations.Count - vacation.PeopleResourceVacations.Sum(t => t.HoursOff))) hours</td>
|
|
<td>
|
|
@if (Html.CheckSecurityObjectPermission(Areas.Vacations, AccessLevel.Write))
|
|
{
|
|
<a id="aEditVac_@vacation.Id" onclick="return CheckLock(this.id, 'Vacations', '@vacation.Id')" href="@Url.Action("EditVacation", "PeopleResource", new {id = vacation.Id})" data-placement="left" class="btn btn-primary popover-warning popover-dark"><i class="fa fa-pencil"></i> Edit</a>
|
|
<a id="aDeleteVac_@vacation.Id" onclick="return CheckLock(this.id, 'Vacations', '@vacation.Id')" href="@Url.Action("DeleteVacation", "PeopleResource", new {id = vacation.Id})" data-placement="left" class="btn btn-danger popover-warning popover-dark"><i class="fa fa-trash-o"></i> Delete</a>
|
|
}
|
|
</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
<tfoot>
|
|
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel widget-messages-alt" id="tranings">
|
|
<div class="panel-heading">
|
|
<span class="panel-title ui-expander">
|
|
<a data-toggle="collapse" data-target="#panelTraining" class="collapsed">
|
|
<i class="panel-title-icon fa fa-rocket"></i>Training Schedule
|
|
</a>
|
|
</span>
|
|
</div>
|
|
<div id="panelTraining" class="panel-collapse collapse">
|
|
<div class="panel-body padding-sm">
|
|
@if(Html.CheckSecurityObjectPermission(Areas.Trainings, AccessLevel.Write))
|
|
{
|
|
<a class="btn btn-primary" style="margin-bottom: 10px;" href="javascript:;" onclick="loadTraining('', '@Model.Id');">Schedule a Training</a>
|
|
}
|
|
@if (Html.CheckSecurityObjectPermission(Areas.Trainings, AccessLevel.Read))
|
|
{
|
|
<div class="messages-list table-light no-margin">
|
|
<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered" id="tblTrainings" style="margin-bottom: 25px;">
|
|
<thead>
|
|
<tr>
|
|
<th>Start Date</th>
|
|
<th>End Date</th>
|
|
<th>Duration</th>
|
|
<th>Name</th>
|
|
<th>Type</th>
|
|
<th>Hours Allocated</th>
|
|
<th>Cost</th>
|
|
<th>Skills</th>
|
|
<th></th>
|
|
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var training in Model.Trainings)
|
|
{
|
|
<tr>
|
|
<td>@training.TrainingStartDate.ToShortDateString()</td>
|
|
<td>@training.TrainingEndDate.ToShortDateString()</td>
|
|
<td>@(training.TrainingDuration) days</td>
|
|
<td>@(training.TrainingName)</td>
|
|
<td>@(training.TrainingTypeName)</td>
|
|
<td>@(training.TrainingTimeAllocated) %</td>
|
|
<td>@(training.TrainingCost)</td>
|
|
<td></td>
|
|
<td>
|
|
@if (Html.CheckSecurityObjectPermission(Areas.Trainings, AccessLevel.Write))
|
|
{
|
|
<a href="#" id="aEditTrain_@training.Id" onclick="return editTraining(this.id, '@training.Id')" data-placement="left" class="btn btn-primary popover-warning popover-dark"><i class="fa fa-pencil"></i> Edit</a>
|
|
<a href="#" id="aDeleteTrain_@training.Id" onclick="return deleteTraining(this.id, '@training.Id')" data-placement="left" class="btn btn-danger popover-warning popover-dark"><i class="fa fa-trash-o"></i> Delete</a>
|
|
}
|
|
</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
<tfoot>
|
|
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="panel widget-messages-alt" id="loan-outs">
|
|
<div class="panel-heading">
|
|
<span class="panel-title ui-expander">
|
|
<a data-toggle="collapse" data-target="#panelLoanOuts" class="collapsed">
|
|
<i class="panel-title-icon fa fa-envelope"></i>Resource Loan-outs
|
|
</a>
|
|
</span>
|
|
</div>
|
|
<div id="panelLoanOuts" class="panel-collapse collapse">
|
|
<div class="panel-body padding-sm">
|
|
<div class="messages-list">
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group" style="margin-bottom: 0;">
|
|
<div class="col-sm-offset-2 col-sm-10">
|
|
<a class="btn btn-primary" href="@Url.Action("Board", "Team")"><i class="fa fa-backward"></i> Back to people resources</a>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Modal -->
|
|
<div id="editScheduleTraining" class="modal fade" tabindex="-1" role="dialog" style="display: none;">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content" id="trainingReload">
|
|
@Html.Partial("_scheduleTraining", Model.Training)
|
|
</div> <!-- / .modal-content -->
|
|
</div> <!-- / .modal-dialog -->
|
|
</div> <!-- /.modal -->
|
|
<!-- / Modal -->
|
|
|
|
<!-- Warning modal alert -->
|
|
<div id="modal-warning" class="modal fade" tabindex="-1" role="dialog" style="display: none;">
|
|
<div class="modal-dialog">
|
|
@Html.BeginForm("DeleteTraining", "PeopleResource")
|
|
{
|
|
@Html.AntiForgeryToken()
|
|
@Html.HiddenFor(model=>model.Id)
|
|
<input type="hidden" id="deleteTrainingId" name="deleteTrainingId" />
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">x</button>
|
|
<h4 class="modal-title" >Delete Training</h4>
|
|
</div>
|
|
<div class="modal-title"></div>
|
|
<div class="modal-body"><strong>Deleting this training will affect all resources involved. Continue?</strong></div>
|
|
<div class="modal-footer">
|
|
<button type="submit" class="btn btn-danger" data-dismiss="modal" onclick="blockUI()">OK</button>
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
|
|
</div>
|
|
</div> <!-- / .modal-content -->
|
|
}
|
|
</div> <!-- / .modal-dialog -->
|
|
</div> <!-- / .modal -->
|
|
<!-- Modal -->
|
|
@section Scripts
|
|
{
|
|
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")"></script>
|
|
} |