public async Task <IActionResult> NewAntennaScanParamAsync(Antenna.AntennaList ascans) { //get session id (we will use it when updating data and handling errors) sessionID_s = HttpContext.Session.GetString("Session"); sessionID = Guid.Parse(sessionID_s); Data current = new Data(); Program.data.TryGetValue(sessionID, out current); //control if current did not came if (current.Receiver == null) //means current == null { ViewData["message"] = "Error occured please restart the program"; return(View(ascans)); } //refresh the list to specify selected antennas current.ListOfAntennas = ascans.antennas; try { _session.BeginTransaction(); for (int i = 0; i < ascans.antennas.Count; i++) { Antenna antenna = ascans.antennas[i]; AntennaScan ascan = new AntennaScan(antenna.ID, current.LastMode.LastSubmode.Scan.ID); if (antenna.IsChecked) { Guid temp = Guid.Empty; temp = await _session.SelectAntennaScan(current.ListOfAntennas[i].ID, current.LastMode.LastSubmode.Scan.ID); if (temp.Equals(Guid.Empty)) { await _session.SaveAntennaScan(ascan); } } else { Guid temp = Guid.Empty; temp = await _session.SelectAntennaScan(current.ListOfAntennas[i].ID, current.LastMode.LastSubmode.Scan.ID); if (!temp.Equals(Guid.Empty)) { await _session.DeleteAntennaScan(ascan); } } } await _session.Commit(); if (current.Receiver != null) //means current != null { current.message = "New Relationship between antennas and scan added"; } } catch (Exception e) { // log exception here current.message = e.Message.ToString() + " Error"; await _session.Rollback(); } finally { _session.CloseTransaction(); } return(RedirectToAction("Preliminary", "AntennaScan")); }