public async Task <IActionResult> ConfigurationAdd(string id) { try { // Get original state data var form = HttpContext.Request.Form; State entity_new = await db.state.byIdAsync(id); // Instance the new configuration entity ConfigurationCPT conf = new ConfigurationCPT() { cca_mode = int.Parse(form["cca"]), gamma = !form["gamma"].Equals("false"), trimester = (Quarter)int.Parse(form["trimester"]), x_mode = int.Parse(form["x"]), y_mode = int.Parse(form["y"]) }; int count = form.Keys.Where(p => p.Contains("left_") && p.Contains("_lat")).Count(); List <Region> regions = new List <Region>(); // This cicle add all regions for (int i = 1; i <= count; i++) { regions.Add(new Region() { left_lower = new Coords() { lat = double.Parse(form["left_lower_" + i.ToString() + "_lat"]), lon = double.Parse(form["left_lower_" + i.ToString() + "_lon"]) }, rigth_upper = new Coords() { lat = double.Parse(form["right_upper_" + i.ToString() + "_lat"]), lon = double.Parse(form["right_upper_" + i.ToString() + "_lon"]) } }); } if (regions.Count() == 0) { return(RedirectToAction("Configuration", new { id = id })); } conf.regions = regions.ToList(); await db.state.addConfigurationCPTAsync(entity_new, conf); await writeEventAsync(id + " conf add: " + conf.ToString(), LogEvent.upd); return(RedirectToAction("Configuration", new { id = id })); } catch (Exception ex) { await writeExceptionAsync(ex); return(RedirectToAction("Configuration", new { id = id })); } }
/// <summary> /// Method that add a new cpt configuration /// </summary> /// <param name="entity">State with the new configuration</param> /// <param name="conf">New configuration to add to the state</param> /// <returns>True if the entity is updated, false otherwise</returns> public async Task <bool> addConfigurationCPTAsync(State entity, ConfigurationCPT conf) { conf.track = new Track() { enable = true, register = DateTime.Now, updated = DateTime.Now }; List <ConfigurationCPT> allConf = entity.conf.ToList(); allConf.Add(conf); entity.conf = allConf; var result = await collection.UpdateOneAsync(Builders <State> .Filter.Eq("_id", entity.id), Builders <State> .Update.Set("conf", entity.conf)); return(result.ModifiedCount > 0); }