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);
     }
 }
示例#2
0
        public ActionResult DeleteConfirmed(int id)
        {
            regions regions = db.regions.Find(id);

            db.regions.Remove(regions);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
示例#3
0
 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));
 }
示例#4
0
        public ActionResult Create([Bind(Include = "id,name")] regions regions)
        {
            if (ModelState.IsValid)
            {
                db.regions.Add(regions);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(regions));
        }
示例#5
0
 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;
         }
     }
 }
示例#6
0
        // 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);
     }
 }
示例#8
0
    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);
    }
示例#9
0
        }         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");
            }
        }
示例#10
0
    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);
    }
示例#11
0
        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);
            }
        }