108 lines
4.4 KiB
C#
108 lines
4.4 KiB
C#
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.Extensions.Logging;
|
|
using Sarand.Net.Standard.Base.Bus;
|
|
using Sarand.Net.Standard.Base.Core;
|
|
using Sarand.Net.Standard.Base.Dbas;
|
|
using Sarand.Net.Standard.Base.Utils;
|
|
using Saxonite.Net.Core.Web.Base.App;
|
|
using Saxonite.Net.Core.Web.Online.Models;
|
|
using Saxonite.Net.Standard.Base.Bus;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace Saxonite.Net.Core.Web.Online.Controllers
|
|
{
|
|
//=======================================================================
|
|
// Online Organisation Controller.
|
|
//=======================================================================
|
|
public partial class OrganisationController : SaxController_Online
|
|
{
|
|
//-------------------------------------------------------------------
|
|
// Construction.
|
|
public OrganisationController(SaxLocaliser localiser, ILogger<HomeController> logger) :
|
|
base(localiser, logger)
|
|
{
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
[HttpGet]
|
|
public IActionResult Index()
|
|
{
|
|
// Validate session.
|
|
if (!ValidUserSession)
|
|
return RedirectToAction("", "");
|
|
|
|
// No 'Index' view as yet - default to 'Opportunities' view.
|
|
return RedirectToAction("Opportunities", "Organisation");
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
[HttpGet]
|
|
public IActionResult Opportunities()
|
|
{
|
|
// Validate session.
|
|
if (!ValidUserSession)
|
|
return RedirectToAction("", "");
|
|
|
|
// Check that user is associated with organisations.
|
|
SaxUserOrganisation.Params prmUserOrganisation = new SaxUserOrganisation.Params();
|
|
prmUserOrganisation.UserAccountIdsIncluded.Add(SessionData.User.UserAccountId);
|
|
prmUserOrganisation.StatusCat = SaxUserOrganisation.StatusCat.ActiveOnly;
|
|
if (AccountMgr.GetUserOrganisationCount(prmUserOrganisation) < 1)
|
|
return RedirectToAction("", "");
|
|
|
|
// Model.
|
|
Model_Organisation_Opportunities model = new Model_Organisation_Opportunities(Localiser);
|
|
|
|
// Filter organisation.
|
|
model.Filter.OrganisationId = SysId.ToString(SessionData_Online.Filter.OrganisationIdMember);
|
|
model.Filter.OrganisationCaption = SessionData_Online.Filter.OrganisationCaptionMember;
|
|
if (StringUtil.IsEmpty(model.Filter.OrganisationId))
|
|
{
|
|
// Pick the first Organisation that the user is a member of.
|
|
ColumnDfn colOrganisationId = AccountMgr.GetUserOrganisationColumnDfn(SaxUserOrganisation.Column.OrganisationId);
|
|
ColumnDfn colOrganisationName = AccountMgr.GetUserOrganisationColumnDfn(SaxUserOrganisation.Column.Organisation_Name);
|
|
prmUserOrganisation = new SaxUserOrganisation.Params();
|
|
prmUserOrganisation.UserAccountIdsIncluded.Add(SessionData.User.UserAccountId);
|
|
prmUserOrganisation.OrganisationMembersOnly = true;
|
|
prmUserOrganisation.StatusCat = SaxUserOrganisation.StatusCat.ActiveOnly;
|
|
prmUserOrganisation.SortColumns.Add(colOrganisationName);
|
|
prmUserOrganisation.ResultsPaging.PageLength = 1;
|
|
prmUserOrganisation.ResultsPaging.PageNo = 1;
|
|
using (DbResultSet resultSet = AccountMgr.ExecuteUserOrganisationQuery(new List<ColumnDfn>() { colOrganisationId, colOrganisationName }, prmUserOrganisation))
|
|
{
|
|
while (resultSet != null && resultSet.HasRows && resultSet.NextRecord())
|
|
{
|
|
NamedValue.Map values = resultSet.GetRecordValues();
|
|
model.Filter.OrganisationId = SysId.ToString(new SysId(values.GetLong(colOrganisationId.DataName)));
|
|
if (!StringUtil.IsEmpty(model.Filter.OrganisationId))
|
|
{
|
|
model.Filter.OrganisationCaption = values.GetString(colOrganisationName.DataName);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if (SysId.IsValid(model.Filter.OrganisationId.ToSysId()) && StringUtil.IsEmpty(model.Filter.OrganisationCaption))
|
|
{
|
|
// Organisation has been identified but no caption available as yet.
|
|
using (SaxOrganisation organisation = AccountMgr.GetOrganisationById(model.Filter.OrganisationId.ToSysId()))
|
|
{
|
|
if (organisation != null)
|
|
model.Filter.OrganisationCaption = organisation.Name;
|
|
}
|
|
}
|
|
// Make a note of the filter values.
|
|
SessionData_Online.Filter.OrganisationIdMember = model.Filter.OrganisationId.ToSysId();
|
|
SessionData_Online.Filter.OrganisationCaptionMember = model.Filter.OrganisationCaption;
|
|
|
|
return View(model);
|
|
}
|
|
|
|
//-------------------------------------------------------------------
|
|
}
|
|
//=======================================================================
|
|
}
|