public bool AddRegion(string regionName, string cityUnique, string provinceUnique) { using (deyouyun_levellink_devEntities _context = new deyouyun_levellink_devEntities()) { var city = _context.citys.FirstOrDefault(l => l.Unique == cityUnique); if (city is null) { return(false); } var province = _context.provinces.FirstOrDefault(l => l.Unique == provinceUnique); if (province is null) { return(false); } var newUnique = GetNewRegionUnique(city); var newRegion = new regions() { CityId = city.Id, Name = regionName, Unique = newUnique }; _context.regions.Add(newRegion); _context.SaveChanges(); return(true); } }
public ActionResult DeleteConfirmed(int id) { regions regions = db.regions.Find(id); db.regions.Remove(regions); db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult Edit([Bind(Include = "id,name")] regions regions) { if (ModelState.IsValid) { db.Entry(regions).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(regions)); }
public ActionResult Create([Bind(Include = "id,name")] regions regions) { if (ModelState.IsValid) { db.regions.Add(regions); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(regions)); }
void GenerateMapVisuals() { for (int x = 0; x < mapSizeX; x++) { for (int y = 0; y < mapSizeY; y++) { regions tt = tileTypes [tiles [x, y]]; GameObject tmpobjct = (GameObject)Instantiate(tt.tileVisualPrefab, new Vector3(x, y, 0), Quaternion.identity); tmpobjct.transform.parent = GameObject.Find("Map").transform; } } }
// GET: Regions/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } regions regions = db.regions.Find(id); if (regions == null) { return(HttpNotFound()); } return(View(regions)); }
public bool UpdateRegionName(regions region) { using (deyouyun_levellink_devEntities _context = new deyouyun_levellink_devEntities()) { var currentRegion = _context.regions.FirstOrDefault(l => l.Unique == region.Unique); if (currentRegion is null) { return(false); } currentRegion.Name = region.Name; _context.SaveChanges(); return(true); } }
regions CreateEmpty() { regions tmpreg = new regions(); tmpreg.Region_ID = tileTypes.Count + 1; tmpreg.name = "Void Tile"; tmpreg.tileVisualPrefab = (GameObject)Resources.Load("Tiles/TileVoid"); tmpreg.isWalkable = true; tmpreg.walkEffect = 1; tmpreg.mapColor.r = 1f; tmpreg.mapColor.g = 1f; tmpreg.mapColor.b = 1f; tmpreg.mapColor.a = 1f; return(tmpreg); }
} protected void Page_Load(object sender, EventArgs e) { XmlDocument wsResponseXmlDoc = new XmlDocument(); //http://api.worldweatheronline.com/premium/v1/weather.ashx?key=****&q=London&format=xml&num_of_days=5 //id=jipx(spacetime0) UriBuilder url = new UriBuilder(); String TodayDate = DateTime.Now.ToString("yyyy-MM-dd"); url.Scheme = "https";// Same as "http://" url.Host = "api.data.gov.sg"; url.Path = "v1/environment/24-hour-weather-forecast";// change to v2 url.Query = "date_time=" + TodayDate + "T15%3A28%3A01&date=" + TodayDate; // https://api.data.gov.sg/v1/environment/24-hour-weather-forecast?date_time=2020-05-25T15%3A28%3A01&date=2020-05-25 //Make a HTTP request to the global weather web service // var json = MakeRequest(url.ToString()); HttpWebRequest request = WebRequest.Create(url.ToString()) as HttpWebRequest; // Set timeout to 15 seconds request.Timeout = 15 * 1000; request.KeepAlive = false; HttpWebResponse response = request.GetResponse() as HttpWebResponse; var json = new StreamReader(response.GetResponseStream()).ReadToEnd(); XNode node = JsonConvert.DeserializeXNode(json, "root"); XmlReader reader = node.CreateReader(); reader.MoveToContent(); XmlDocument doc = new XmlDocument(); XmlNode cd = doc.ReadNode(reader); doc.AppendChild(cd); // Response.Write(doc.OuterXml); // Response.Write(node.ToString()); //XmlDocument xmlDoc = new XmlDocument(); //xmlDoc.Load(response.GetResponseStream()); if (doc != null) { //display the XML response for user //String xmlString = doc.InnerXml; //Response.ContentType = "text/xml"; //Response.Write(xmlString); XmlDeclaration xmldecl; xmldecl = doc.CreateXmlDeclaration("1.0", "UTF-8", null); //Add the new node to the document. XmlElement root = doc.DocumentElement; doc.InsertBefore(xmldecl, root); List <regions> periodlist = new List <regions>(); XmlNodeList idNodes = doc.SelectNodes("root/items/periods"); foreach (XmlNode nodes in idNodes) { regions region = new regions(); XmlNode urlNode = nodes.SelectSingleNode("regions"); // Person myObj = new Person(); XmlNode regionNode = nodes.SelectSingleNode("regions"); region.South = regionNode.SelectSingleNode("south").InnerText; region.North = regionNode.SelectSingleNode("north").InnerText; region.East = regionNode.SelectSingleNode("east").InnerText; region.West = regionNode.SelectSingleNode("west").InnerText; region.Central = regionNode.SelectSingleNode("central").InnerText; XmlNode timeNode = nodes.SelectSingleNode("time"); region.Start = timeNode.SelectSingleNode("start").InnerText; region.End = timeNode.SelectSingleNode("end").InnerText; periodlist.Add(region); GridView1.DataSource = periodlist; GridView1.DataBind(); // // display the XML response for user // String xmlString = doc.InnerXml; //Response.ContentType = "text/xml"; // Response.Write(xmlString); // // Save the document to a file and auto-indent the output. // XmlTextWriter writer = new XmlTextWriter(Server.MapPath("xmlweather.xml"), null); // writer.Formatting = System.Xml.Formatting.Indented; // wsResponseXmlDoc.Save(writer); // //You're never closing the writer, so I would expect it to keep the file open. That will stop future attempts to open the file // writer.Close(); } //var regions = nodes.Attributes["regions"].Attributes["south"].Value; //periodsd.regions = nodes.Attributes["regions"].Attributes["south"].Value; // list.Add(periodsd); // Save the document to a file and auto-indent the output. //XmlTextWriter writer = new XmlTextWriter(Server.MapPath("xmlweather.xml"), null); //writer.Formatting = System.Xml.Formatting.Indented; //wsResponseXmlDoc.Save(writer); //You're never closing the writer, so I would expect it to keep the file open. That will stop future attempts to open the file // writer.Close(); } else { Response.ContentType = "text/html"; Response.Write("error"); } }
void Start() { regions tmpreg = CreateEmpty(); // Void Tile für Abstand zwischen den Karten tmpreg.isWalkable = false; tileTypes.Add(tmpreg); tmpreg = CreateEmpty(); tmpreg.name = "Portal"; tmpreg.tileVisualPrefab = (GameObject)Resources.Load("Tiles/TileDoor"); tmpreg.walkEffect = 1; tileTypes.Add(tmpreg); tmpreg = CreateEmpty(); tmpreg.name = "Forest"; tmpreg.tileVisualPrefab = (GameObject)Resources.Load("Tiles/TileForest"); tmpreg.walkEffect = 2; tmpreg.mapColor.r = 0.184f; tmpreg.mapColor.g = 0.961f; tmpreg.mapColor.b = 0.412f; tmpreg.mapColor.a = 0.090f; tileTypes.Add(tmpreg); tmpreg = CreateEmpty(); tmpreg.name = "Grass"; tmpreg.tileVisualPrefab = (GameObject)Resources.Load("Tiles/TileGrass"); tmpreg.mapColor.r = 0.780f; tmpreg.mapColor.g = 0.992f; tmpreg.mapColor.b = 0.125f; tmpreg.mapColor.a = 0.114f; tileTypes.Add(tmpreg); tmpreg = CreateEmpty(); tmpreg.name = "Road"; tmpreg.tileVisualPrefab = (GameObject)Resources.Load("Tiles/TileRoad"); tmpreg.walkEffect = 0.5f; tmpreg.mapColor.r = 0.996f; tmpreg.mapColor.g = 0.678f; tmpreg.mapColor.b = 0.784f; tmpreg.mapColor.a = 0.125f; tileTypes.Add(tmpreg); tmpreg = CreateEmpty(); tmpreg.name = "Mountain"; tmpreg.tileVisualPrefab = (GameObject)Resources.Load("Tiles/TileMountain"); tmpreg.walkEffect = 8; tmpreg.mapColor.r = 0.976f; tmpreg.mapColor.g = 0.976f; tmpreg.mapColor.b = 0.976f; tmpreg.mapColor.a = 0.098f; tileTypes.Add(tmpreg); tmpreg = CreateEmpty(); tmpreg.name = "Water"; tmpreg.tileVisualPrefab = (GameObject)Resources.Load("Tiles/TileWater"); tmpreg.walkEffect = 0; tmpreg.isWalkable = false; tmpreg.mapColor.r = 0.000f; tmpreg.mapColor.g = 0.675f; tmpreg.mapColor.b = 0.969f; tmpreg.mapColor.a = 0.118f; tileTypes.Add(tmpreg); tmpreg = CreateEmpty(); tmpreg.name = "Swamp"; tmpreg.tileVisualPrefab = (GameObject)Resources.Load("Tiles/TileSwamp"); tmpreg.walkEffect = 5; tmpreg.mapColor.r = 0.965f; tmpreg.mapColor.g = 0.635f; tmpreg.mapColor.b = 0.455f; tmpreg.mapColor.a = 0.094f; tileTypes.Add(tmpreg); tmpreg = CreateEmpty(); tmpreg.name = "Beach"; tmpreg.tileVisualPrefab = (GameObject)Resources.Load("Tiles/TileBeach"); tmpreg.walkEffect = 1.1f; tmpreg.mapColor.r = 0.996f; tmpreg.mapColor.g = 0.945f; tmpreg.mapColor.b = 0.000f; tmpreg.mapColor.a = 0.125f; tileTypes.Add(tmpreg); tmpreg = CreateEmpty(); tmpreg.name = "Lava"; tmpreg.tileVisualPrefab = (GameObject)Resources.Load("Tiles/TileLava"); tmpreg.walkEffect = 0; tmpreg.isWalkable = false; tmpreg.mapColor.r = 0.988f; tmpreg.mapColor.g = 0.118f; tmpreg.mapColor.b = 0.149f; tmpreg.mapColor.a = 0.118f; tileTypes.Add(tmpreg); tmpreg = CreateEmpty(); tmpreg.name = "Castel"; tmpreg.tileVisualPrefab = (GameObject)Resources.Load("Tiles/TileCastel"); tmpreg.walkEffect = 0; tmpreg.mapColor.r = 0.000f; tmpreg.mapColor.g = 0.000f; tmpreg.mapColor.b = 0.000f; tmpreg.mapColor.a = 0.024f; tileTypes.Add(tmpreg); tmpreg = CreateEmpty(); tmpreg.name = "Wall"; tmpreg.tileVisualPrefab = (GameObject)Resources.Load("Tiles/TileWall"); tmpreg.walkEffect = 0; tmpreg.isWalkable = false; tmpreg.mapColor.r = 0.996f; tmpreg.mapColor.g = 0.000f; tmpreg.mapColor.b = 0.996f; tmpreg.mapColor.a = 0.125f; tileTypes.Add(tmpreg); }
private async Task UpdateRegion(regions region, Dictionary <long, int> stations, CancellationToken stoppingToken) { try { if (stoppingToken.IsCancellationRequested) { return; } _logger.LogInformation("开始下载订单: Region: " + region.regionid + $" TQ: {IsTQ}"); var dttoday = MarketDB.ChinaTimeZone.AtStartOfDay(DateTime.Today.ToLocalDateTime().Date); var dtnext = dttoday.Plus(Duration.FromDays(1)); List <Get_markets_region_id_orders_200_ok> neworder; try { neworder = await GetESIOrders((int)region.regionid, stoppingToken); } catch (Exception e) { _logger.LogInformation("下载订单失败: Region: " + region.regionid + $" TQ: {IsTQ} " + e.Message); return; } using var sp = _service.CreateScope(); await using MarketDB db = IsTQ ? sp.ServiceProvider.GetService <TQMarketDB>() : sp.ServiceProvider.GetService <CNMarketDB>(); var currentOrders = await db.current_market.Where(p => p.regionid == region.regionid).ToListAsync(cancellationToken: stoppingToken); _logger.LogInformation("完成下载订单: Region: " + region.regionid + $" TQ: {IsTQ}; APIOrder {neworder.Count()}"); var citidal = currentOrders.Where(p => p.stationid > int.MaxValue).Select(p => p.stationid) .Distinct().ToList(); citidal.AddRange(neworder.Where(p => p.Location_id > int.MaxValue).Select(p => p.Location_id).Distinct()); citidal = citidal.Distinct().Where(stations.ContainsKey).ToList(); var citidaltasks = citidal.Select(p => GetStructOrders(p, stoppingToken)).ToList(); await Task.WhenAll(citidaltasks); var citidalorders = citidaltasks.AsParallel().SelectMany(p => p.Result).AsParallel() .Where(p => stations.ContainsKey(p.Location_id)) .Select(citidaltask => { var orderinfo = new Get_markets_region_id_orders_200_ok() { Location_id = citidaltask.Location_id, Duration = citidaltask.Duration, Is_buy_order = citidaltask.Is_buy_order, Issued = citidaltask.Issued, Min_volume = citidaltask.Min_volume, Order_id = citidaltask.Order_id, Price = citidaltask.Price, Type_id = citidaltask.Type_id, Volume_remain = citidaltask.Volume_remain, Volume_total = citidaltask.Volume_total }; orderinfo.System_id = (int)stations[citidaltask.Location_id]; orderinfo.Range = citidaltask.Range switch { Get_markets_structures_structure_id_200_okRange.Region => Get_markets_region_id_orders_200_okRange.Region, Get_markets_structures_structure_id_200_okRange.Solarsystem => Get_markets_region_id_orders_200_okRange.Solarsystem, Get_markets_structures_structure_id_200_okRange.Station => Get_markets_region_id_orders_200_okRange.Station, Get_markets_structures_structure_id_200_okRange._1 => Get_markets_region_id_orders_200_okRange._1, Get_markets_structures_structure_id_200_okRange._2 => Get_markets_region_id_orders_200_okRange._2, Get_markets_structures_structure_id_200_okRange._3 => Get_markets_region_id_orders_200_okRange._3, Get_markets_structures_structure_id_200_okRange._4 => Get_markets_region_id_orders_200_okRange._4, Get_markets_structures_structure_id_200_okRange._5 => Get_markets_region_id_orders_200_okRange._5, Get_markets_structures_structure_id_200_okRange._10 => Get_markets_region_id_orders_200_okRange._10, Get_markets_structures_structure_id_200_okRange._20 => Get_markets_region_id_orders_200_okRange._20, Get_markets_structures_structure_id_200_okRange._30 => Get_markets_region_id_orders_200_okRange._30, Get_markets_structures_structure_id_200_okRange._40 => Get_markets_region_id_orders_200_okRange._40, _ => orderinfo.Range }; return(orderinfo); }); neworder.AddRange(citidalorders); var allorders = neworder.AsParallel().GroupBy(p => p.Order_id).Select(p => p.First()).ToList(); _logger.LogInformation("完成下载玩家建筑物订单: Region: " + region.regionid + $" TQ: {IsTQ}; "); var alltypes = allorders.Select(p => p.Type_id).Distinct().ToList(); // ConcurrentDictionary<long, current_market> orders = // new ConcurrentDictionary<long, current_market>(currentOrders); var insertorder = new ConcurrentBag <current_market>(); var oldorders = allorders.AsParallel().GroupJoin(currentOrders.AsParallel(), ok => ok.Order_id, market => market.orderid, (p, market) => new { p, m = market.FirstOrDefault() }); oldorders.ForAll(obj => { current_market market; var p = obj.p; if (obj.m == null) { market = new current_market { orderid = p.Order_id, reportedtime = Instant.FromDateTimeOffset(DateTimeOffset.Now) }; insertorder.Add(market); } else { market = obj.m; } market.stationid = p.Location_id; market.typeid = p.Type_id; market.interval = p.Duration; market.minvolume = p.Min_volume; market.volremain = p.Volume_remain; market.issued = Instant.FromDateTimeOffset(p.Issued); market.volenter = p.Volume_total; market.price = p.Price; market.bid = p.Is_buy_order ? 1 : 0; market.range = p.Range.ConvertRange(); market.systemid = p.System_id; market.regionid = region.regionid; }); // Parallel.ForEach(allorders, p => // foreach (var p in allorders) var todayhistsory = await db.market_markethistorybyday.Where(p => p.regionid == region.regionid && alltypes.Contains(p.typeid) && p.date == dttoday.Date).ToDictionaryAsync(p => p.typeid, p => p, cancellationToken: stoppingToken); var realtimehistory = !IsTQ ? await db.evetypes.Where(p => alltypes.Contains(p.typeID)).Select(ip => ip .market_realtimehistory.Where(p => p.regionid == region.regionid && p.date >= dttoday.ToInstant() && p.date < dtnext.ToInstant()).OrderByDescending(o => o.date).First()) .Where(p => p != null).ToDictionaryAsync(p => p.typeid, p => p, cancellationToken: stoppingToken) : null ; foreach (var rt in allorders.AsParallel().GroupBy(p => p.Type_id, (i, oks) => new { Key = i, Value = oks.ToList().AsParallel() })) { var hassellorder = rt.Value.Any(p => p.Is_buy_order == false); var hasbuyorder = rt.Value.Any(p => p.Is_buy_order == true); if (hassellorder) { var price = rt.Value.Where(p => !p.Is_buy_order).Min(o => o.Price); if (!todayhistsory.TryGetValue(rt.Key, out var hisbydate)) { hisbydate = new market_markethistorybyday(); hisbydate.date = LocalDate.FromDateTime(DateTime.Today); hisbydate.regionid = region.regionid; hisbydate.typeid = rt.Key; hisbydate.start = price; db.market_markethistorybyday.Add(hisbydate); } hisbydate.end = price; hisbydate.max = Math.Max(hisbydate.max, price); hisbydate.min = hisbydate.min > 0 ? Math.Min(hisbydate.min, price) : price; } if (!IsTQ && rt.Value.Any()) { market_realtimehistory realtime; realtime = new market_realtimehistory { regionid = region.regionid, typeid = rt.Key, date = Instant.FromDateTimeOffset(DateTimeOffset.Now), buy = hasbuyorder ? rt.Value.Where(p => p.Is_buy_order).Max(p => p.Price) : 0, sell = hassellorder ? rt.Value.Where(p => !p.Is_buy_order).Min(p => p.Price) : 0, buyvol = hasbuyorder ? rt.Value.Where(p => p.Is_buy_order).Sum(p => (long)p.Volume_remain) : 0, sellvol = hassellorder ? rt.Value.Where(p => !p.Is_buy_order).Sum(p => (long)p.Volume_remain) : 0, }; if (realtimehistory.TryGetValue(rt.Key, out var oldrealtime)) { if (Math.Abs(oldrealtime.buy - realtime.buy) < 0.001 && Math.Abs(oldrealtime.sell - realtime.sell) < 0.001 && Math.Abs(oldrealtime.buyvol - realtime.buyvol) < 1 && Math.Abs(oldrealtime.sellvol - realtime.sellvol) < 1 ) { realtime = null; } } if (realtime != null) { db.market_realtimehistory.Add(realtime); } } } var allids = allorders.AsParallel().Select(o => o.Order_id).Distinct().ToList(); var delteids = currentOrders.Select(p => p.orderid).Where(p => !allids.Contains(p)); _logger.LogInformation("开始保存订单: Region: " + region.regionid + $" TQ: {IsTQ}"); await using var trans = await db.Database.BeginTransactionAsync(CancellationToken.None); try { db.current_market.AddRange(insertorder); await db.Database.ExecuteSqlInterpolatedAsync( $"delete from current_market where orderid = any ({delteids.ToList()}) and regionid = {region.regionid};", CancellationToken.None); await db.SaveChangesAsync(CancellationToken.None); await trans.CommitAsync(CancellationToken.None); _logger.LogInformation("完成保存订单: Region: " + region.regionid + $" TQ: {IsTQ}"); } finally { } } catch (Exception e) { _logger.LogError("出现错误" + e); } }