258 lines
12 KiB
Plaintext
258 lines
12 KiB
Plaintext
@using EnVisage.Code
|
|
@using EnVisage.Code.HtmlHelpers
|
|
@using Microsoft.AspNet.Identity
|
|
@model EnVisage.Models.ProjectModel
|
|
<div class="panel no-margin no-border">
|
|
<script type="text/javascript">
|
|
$('.create').click(function () {
|
|
if (!CheckLock(this.id, 'Project', '@Model.Id'))
|
|
return false;
|
|
$('.divForCreate_@Model.Id').load('@Url.Action("AddNote", "Project", new {Id = Model.Id})', function () {
|
|
$(".innerForm input").removeData("validator");
|
|
$(".innerForm input").removeData("unobtrusiveValidation");
|
|
$.validator.unobtrusive.parseDynamicContent('.innerForm');
|
|
$('#btnAddNote').click(function () {
|
|
if ($(this).parents('form').valid())
|
|
blockUI();
|
|
});
|
|
});
|
|
$('#modalAddNote_@Model.Id').modal("show");
|
|
});
|
|
function editNote(buttonId, id) {
|
|
if (id == null || id == "")
|
|
return "";
|
|
if (!CheckLock(buttonId, 'Project', '@Model.Id'))
|
|
return false;
|
|
var text = "@Url.Action( "EditNote", "Project", new { Id = "JSVar" })";
|
|
text = text.replace("JSVar", id);
|
|
$('.divForCreate_@Model.Id').load(text, function () {
|
|
$(".innerForm input").removeData("validator");
|
|
$(".innerForm input").removeData("unobtrusiveValidation");
|
|
$.validator.unobtrusive.parseDynamicContent('.innerForm');
|
|
$('#btnAddNote').click(function () {
|
|
if ($(this).parents('form').valid())
|
|
blockUI();
|
|
});
|
|
});
|
|
$('#modalAddNote_@Model.Id').modal("show");
|
|
};
|
|
function deleteNote(buttonId, Id) {
|
|
if (Id == null || Id == "")
|
|
return "";
|
|
if (!CheckLock(buttonId, 'Project', '@Model.Id'))
|
|
return false;
|
|
bootbox.confirm({
|
|
message: "Are you suse you want to delete this note?",
|
|
callback: function (result) {
|
|
if (result) {
|
|
var text = "@Url.Action( "DeleteNote", "Project", new { Id = "JSVar" })";
|
|
text = text.replace("JSVar", Id);
|
|
blockUI();
|
|
$('.divForCreate_@Model.Id').load(text, function (response, status, xhr) {
|
|
unblockUI();
|
|
if (status == "error") {
|
|
showErrorModal('Loading error', 'We are sorry but there was an error, please try again later.');
|
|
}
|
|
else {
|
|
window.location.reload();
|
|
}
|
|
});
|
|
}
|
|
},
|
|
className: "bootbox-sm"
|
|
});
|
|
};
|
|
|
|
function loadScenario(projectId) {
|
|
var url = "?Id=" + projectId;
|
|
$('#reloadForm').load('@Url.Action("LoadScenario", "Scenarios")' + url, function () {
|
|
initScenario();
|
|
$('#createScenario').modal('show');
|
|
//}
|
|
});
|
|
}
|
|
|
|
$(document).on('hide.bs.modal', "div[id^='modalAddNote_']", function (e) {
|
|
if ($(e.target).attr('id').indexOf("modalAddNote_") >= 0)
|
|
return true; // close modal form
|
|
if (typeof isNoteDataChanged === 'function')
|
|
if (isNoteDataChanged()) {
|
|
if (confirm("Note editing form contains unsaved changes, do you really want to close the form?")) {
|
|
if (typeof resetNoteDataChanged === 'function') {
|
|
resetNoteDataChanged();
|
|
$("div[id^='modalAddNote_']").modal("hide");
|
|
}
|
|
};
|
|
return false; // DO NOT close modal form
|
|
}
|
|
return true; // close modal form
|
|
});
|
|
|
|
</script>
|
|
<div class="panel-body">
|
|
<div class="row">
|
|
<div class="col-sm-12">
|
|
<div class="panel-group no-margin" id="projectDetailsAccordion_@Model.Id">
|
|
<div class="panel">
|
|
<div class="panel-heading">
|
|
<a class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#projectDetailsAccordion_@Model.Id" href="#collapseTwo-info_@Model.Id">
|
|
Scenarios
|
|
</a>
|
|
</div>
|
|
<div id="collapseTwo-info_@Model.Id" class="panel-collapse collapse">
|
|
<div class="panel-body">
|
|
@if (SecurityManager.CheckSecurityObjectPermission(Areas.Scenarios, AccessLevel.Write))
|
|
{
|
|
<a class="btn btn-primary" href="javascript:;" onclick="loadScenario('@Model.Id');"><i class="fa fa-plus"></i> Add Scenario</a>
|
|
<h1></h1>
|
|
}
|
|
<div class="table-light table-responsive no-margin" id="scenarioslist_@Model.Id">
|
|
<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered no-margin">
|
|
<thead>
|
|
<tr>
|
|
<th>Status</th>
|
|
<th>Scenario Type</th>
|
|
<th>Name</th>
|
|
<th>Freeze Revenue</th>
|
|
<th>Projected Revenue</th>
|
|
<th>Expected Gross Margin</th>
|
|
<th>Calculated Gross Margin</th>
|
|
<th>Start Date</th>
|
|
<th>End Date</th>
|
|
<th>Milestones</th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var scenario in Model.Scenarios)
|
|
{
|
|
if(scenario.Type != ScenarioType.Actuals)
|
|
{
|
|
<tr>
|
|
<td><span id="status_@scenario.Id">@scenario.Status</span></td>
|
|
<td>@scenario.Type</td>
|
|
<td><a id="aDet_@scenario.Id" class="popover-warning popover-dark" onclick="return CheckLock(this.id, 'Scenario', '@scenario.Id')" href="/Scenarios/Details/@scenario.Id?backUrl=@(Url.Encode(Url.Action("Edit", "Project", new{id=Model.Id})))&backName=project">@scenario.Name</a></td>
|
|
<td>@(scenario.FreezeRevenue ? "Yes" : "No")</td>
|
|
<td>@(scenario.ProjectedRevenue.HasValue ? scenario.ProjectedRevenue.Value.ToString("#") : string.Empty) </td>
|
|
<td>@(scenario.ExpectedGrossMargin.HasValue ? scenario.ExpectedGrossMargin.Value.ToString("p") : string.Empty) </td>
|
|
<td>@(scenario.CalculatedGrossMargin.HasValue ? scenario.CalculatedGrossMargin.Value.ToString("p") : string.Empty) </td>
|
|
<td>@(scenario.StartDate.HasValue ? scenario.StartDate.Value.ToShortDateString() : string.Empty)</td>
|
|
<td>@(scenario.EndDate.HasValue ? scenario.EndDate.Value.ToShortDateString() : string.Empty) </td>
|
|
<td>@scenario.Shots</td>
|
|
<td>
|
|
@if(scenario.Status.HasValue && scenario.Status.Value == ScenarioStatus.Active)
|
|
{
|
|
<a id='@scenario.Id' onclick="if(CheckLock(this.id, 'Scenario', '@scenario.Id')) {ToggleStatus('@scenario.Id', this);}" data-toggle="popover" data-placement="left" class="btn btn-sm popover-warning popover-dark">Deactivate</a>
|
|
}
|
|
else if (scenario.Status.HasValue && scenario.Status.Value == ScenarioStatus.Inactive)
|
|
{
|
|
<a id='@scenario.Id' onclick="if(CheckLock(this.id, 'Scenario', '@scenario.Id')) {ToggleStatus('@scenario.Id', this);}" data-toggle="popover" data-placement="left" class="btn btn-sm btn-success popover-warning popover-dark">Activate</a>
|
|
}
|
|
<a id="btnDelete_@scenario.Id" onclick="return CheckLock(this.id, 'Scenario', '@scenario.Id')" data-toggle="popover" data-placement="left" class="btn btn-sm btn-danger popover-warning popover-dark" href="@Url.Action("Delete", "Scenarios", new {@id = scenario.Id})"><i class="fa fa-trash-o"></i> Delete</a>
|
|
</td>
|
|
</tr>
|
|
}
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@{
|
|
List<Contact> projectContacts = Utils.GetProjectContacts(Model.Id);
|
|
}
|
|
@if (projectContacts.Count > 0)
|
|
{
|
|
<div class="panel">
|
|
<div class="panel-heading">
|
|
<a class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#projectDetailsAccordion_@Model.Id" href="#collapseThree-info_@Model.Id">
|
|
Contacts
|
|
</a>
|
|
</div>
|
|
<div id="collapseThree-info_@Model.Id" class="panel-collapse collapse">
|
|
<div class="panel-body">
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<h4>Internal contacts</h4>
|
|
<ul class="list-unstyled">
|
|
@foreach (var contact in projectContacts.Where(c => c.Type == ContactType.CompanyContact.GetHashCode()))
|
|
{
|
|
<li class="padding-sm-vr no-padding-t">
|
|
<strong>@(contact.FirstName + " " + contact.LastName)</strong><br/>
|
|
@if(!string.IsNullOrEmpty(contact.Email)) {<span><i class="fa fa-envelope"></i> <a href="mailto:@contact.Email">@contact.Email</a></span><br/>}
|
|
@if(!string.IsNullOrEmpty(contact.Phone)) {<span><i class="fa fa-phone"></i> @contact.Phone</span>}
|
|
</li>
|
|
}
|
|
</ul>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<h4>External contacts</h4>
|
|
<ul class="list-unstyled">
|
|
@foreach (var contact in projectContacts.Where(c => c.Type == ContactType.ClientContact.GetHashCode()))
|
|
{
|
|
<li class="padding-sm-vr no-padding-t">
|
|
<strong>@(contact.FirstName + " " + contact.LastName)</strong><br/>
|
|
@if(!string.IsNullOrEmpty(contact.Email)) {<span><i class="fa fa-envelope"></i> <a href="mailto:@contact.Email">@contact.Email</a></span><br/>}
|
|
@if(!string.IsNullOrEmpty(contact.Phone)) {<span><i class="fa fa-phone"></i> @contact.Phone</span>}
|
|
</li>
|
|
}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
<div class="panel">
|
|
<div class="panel-heading">
|
|
<a class="accordion-toggle collapsed" data-toggle="collapse" data-parent="#projectDetailsAccordion_@Model.Id" href="#collapseFour-info_@Model.Id">
|
|
Notes
|
|
</a>
|
|
</div>
|
|
<div id="collapseFour-info_@Model.Id" class="panel-collapse collapse">
|
|
<div class="panel-body">
|
|
<a id="aAN_@Model.Id" class="btn btn-primary create popover-warning popover-dark" href="javascript:;"><i class="fa fa-plus"></i> Add Note</a>
|
|
<h1></h1>
|
|
<div class="table-light table-responsive" style="margin-bottom: 7px;" id="noteslist_@Model.Id">
|
|
<table cellpadding="0" cellspacing="0" border="0" class="table table-striped table-bordered no-margin">
|
|
<thead>
|
|
<tr>
|
|
<th>Date</th>
|
|
<th>Author</th>
|
|
<th>Title</th>
|
|
<th></th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
@foreach (var note in Model.Notes)
|
|
{
|
|
<tr>
|
|
<td>@((note.DateAdded == null)? "N/A" : note.DateAdded.ToString("d"))</td>
|
|
<td>@note.Author.UserName</td>
|
|
<td>@note.Title</td>
|
|
<td>
|
|
<a id="aEN_@(Model.Id)_@note.Id" href="javascript:void(0)" onclick="editNote(this.id, '@note.Id');" data-placement="left" class="btn btn-primary lockable popover-warning popover-dark"><i class="fa fa-edit"></i> Edit</a>
|
|
<a id="aDN_@(Model.Id)_@note.Id" href="javascript:void(0)" onclick="deleteNote(this.id, '@note.Id');" data-placement="left" class="btn btn-danger lockable popover-warning popover-dark"><i class="fa fa-trash-o"></i> Delete</a>
|
|
|
|
</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div id="modalAddNote_@Model.Id" class="modal fade" tabindex="-1" role="dialog" style="display: none;" data-backdrop="static">
|
|
<div class="modal-dialog divForCreate_@Model.Id" style="width:350px;">
|
|
@*@Html.Partial("_addNote", new NoteModel(Model.Id)) *@
|
|
</div> <!-- / .modal-dialog -->
|
|
</div> <!-- / .modal -->
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|