using Microsoft.AspNetCore.Mvc; using Sarand.Net.Standard.Base.App; using Sarand.Net.Standard.Base.Bus; using Sarand.Net.Standard.Base.Core; using Sarand.Net.Standard.Base.Dbas; using Saxonite.Net.Core.Web.Admin.Models; using Saxonite.Net.Standard.Base.App; using Saxonite.Net.Standard.Base.Bus; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Saxonite.Net.Core.Web.Admin.Controllers { //======================================================================= partial class SportController { //------------------------------------------------------------------- // Sport data. public class SportData_List { public String Id { get; set; } public String Name { get; set; } public String StatusCode { get; set; } public String StatusDesc { get; set; } } public class SportData_Full : SportData_List { } private void PopulateSportResponseData(SaxSport sport, SportData_List data) { data.Id = SysId.ToString(sport.Id); data.Name = sport.Name; data.StatusCode = sport.StatusCode; data.StatusDesc = sport.StatusDesc; } private void PopulateSportResponseData(SaxSport sport, SportData_Full data) { PopulateSportResponseData(sport, data as SportData_List); } //------------------------------------------------------------------- // Get Sport List ajax request. //------------------------------------------------------------------- public class AjaxResponse_SportList : AjaxResponse_Data { public List Sports { get; } = new List(); } //------------------------------------------------------------------- [HttpPost] [Route("Sport/Ajax/GetList")] public IActionResult Ajax_GetList(Model_Sport model) { String fn = GetType().Name + ".Ajax_GetList"; String messageTitle = Localiser["sport.caption.sports"]; AjaxResponse_SportList responseData = new AjaxResponse_SportList(); // Validate session. if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData); // Item filter. SaxSport.Params prmSport = new SaxSport.Params(); prmSport.SportFilter = model.Filter.Sport; prmSport.StatusCat = SaxSport.StatusCat.NotDeleted; model.DataItemTotal = (ulong)ReferenceMgr.GetSportCount(prmSport); model.PopulatePagingTo(prmSport.ResultsPaging); // Item columns. ColumnDfn colId = ReferenceMgr.GetSportColumnDfn(SaxSport.Column.Id); ColumnDfn colName = ReferenceMgr.GetSportColumnDfn(SaxSport.Column.Name); ColumnDfn colStatus = ReferenceMgr.GetSportColumnDfn(SaxSport.Column.Status); List columns = new List() { colId, colName, colStatus }; // Sort order. prmSport.SortColumns.Add(colName); // Query items. model.DataItemCount = 0; using (DbResultSet resultSet = ReferenceMgr.ExecuteSportQuery(columns, prmSport)) { while (resultSet != null && resultSet.HasRows && resultSet.NextRecord()) { model.DataItemCount++; NamedValue.Map values = resultSet.GetRecordValues(); SportData_List sportData = new SportData_List() { Id = values.GetString(colId.DataName), Name = values.GetString(colName.DataName), StatusCode = values.GetString(colStatus.DataName), StatusDesc = SacsSystem.GetStatusDescForCode(values.GetString(colStatus.DataName)) }; responseData.Sports.Add(sportData); } } // Complete response. responseData.SetPaging(model); responseData.Success = true; return Json(responseData); } //------------------------------------------------------------------- // Get Sport ajax request. //------------------------------------------------------------------- public class AjaxResponse_Sport : AjaxResponse_Data { public SportData_Full sport { get; } = new SportData_Full(); } //------------------------------------------------------------------- [HttpPost] [Route("Sport/Ajax/GetItem")] public IActionResult Ajax_GetItem(Model_Sport model) { String fn = GetType().Name + ".Ajax_GetItem"; String messageTitle = Localiser["sport.caption.sport"]; AjaxResponse_Sport responseData = new AjaxResponse_Sport(); // Validate session. if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData); // Identify item. if (!SysId.IsValid(model.SportId)) return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.specified"])); // Retrieve item. SaxSport sport = ReferenceMgr.GetSportById(model.SportId); if (sport == null) { SaLogger.Warn(fn + " Failed to retrieve sport for Id: '" + model.SportIdValue + "'"); return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"])); } // Construct response. PopulateSportResponseData(sport, responseData.sport); // Complete response. responseData.Success = true; return Json(responseData); } //------------------------------------------------------------------- // Store Sport ajax request. //------------------------------------------------------------------- [HttpPost] [Route("Sport/Ajax/StoreItem")] public IActionResult Ajax_StoreItem(Model_Sport model) { String fn = GetType().Name + ".Ajax_StoreItem"; String messageTitle = Localiser["sport.caption.sport"]; AjaxResponse_Sport responseData = new AjaxResponse_Sport(); // Validate session. if (!ValidUserSession) return GetAjaxResult_InvalidSession(responseData); // Validate item properties. model.ValidateSportData(responseData); if (responseData.HasControlErrors()) return Json(responseData); // Retrieve existing item. SaxSport sport = ReferenceMgr.GetSportById(model.SportId); if (sport == null && SysId.IsValid(model.SportId)) { SaLogger.Warn(fn + " Failed to retrieve sport for Id: '" + model.SportIdValue + "'"); return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.id.not.found"])); } // Create new item if required. if (sport == null) sport = ReferenceMgr.CreateSport(); // Populate item properties. if (model.SportName != null) sport.Name = model.SportName; if (model.SportStatusCode != null) sport.Status = model.SportStatus; // Store item. if (!SysId.IsValid(sport.Id)) { if (!ReferenceMgr.InsertSport(sport, DbUpdateInfo)) { SaLogger.Warn(fn + " Failed to insert sport: " + ReferenceMgr.ErrorStateMessage); return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.insert.failed"] + "\n\n" + ReferenceMgr.ErrorStateMessage)); } } else { if (!ReferenceMgr.UpdateSport(sport, DbUpdateInfo)) { SaLogger.Warn(fn + " Failed to update sport [Id:" + SysId.ToString(sport.Id) + "]: " + ReferenceMgr.ErrorStateMessage); return Json(responseData.SetMessage(messageTitle, Localiser["msg.error.item.update.failed"] + "\n\n" + ReferenceMgr.ErrorStateMessage)); } } // Construct response. PopulateSportResponseData(sport, responseData.sport); // Complete response. responseData.Success = true; return Json(responseData); } //------------------------------------------------------------------- } //======================================================================= }