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 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() { 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); } //------------------------------------------------------------------- } //======================================================================= }