public ActionResult Print(HttpPostedFileBase file)
        {
            if (file != null && file.ContentLength > 0)
            {
                var star = Serializer.LoadFromStream(file.InputStream);

                using (var db = new ApplicationDbContext())
                {
                    var row = new DbStar
                    {
                        KIC_ID = star.KIC_ID,
                        Teff   = star.Teff,
                        Logg   = star.Logg,
                        FeH    = star.FeH,
                        Mass   = star.Mass,
                        Radius = star.Radius,
                    };

                    row.DbPlanets = new Collection <DbPlanet>();
                    foreach (var planet in star.PlanetList)
                    {
                        row.DbPlanets.Add(new DbPlanet
                        {
                            Name   = planet.Name,
                            Radius = planet.Radius,
                        });
                    }

                    db.DbStars.Add(row);
                    db.SaveChanges();
                }
                return(View(star));
            }
            return(RedirectToAction("Index"));
        }
예제 #2
0
 public ActionResult Edit([Bind(Include = "Id, KIC_ID, Teff, Logg, FeH, Mass, Radius")] DbStar dbStar)
 {
     if (ModelState.IsValid)
     {
         db.Entry(dbStar).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(dbStar));
 }
예제 #3
0
        public ActionResult Create([Bind(Include = "Id, KIC_ID, Teff, Logg, FeH, Mass, Radius")] DbStar dbStar)
        {
            if (ModelState.IsValid)
            {
                db.DbStars.Add(dbStar);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(dbStar));
        }
예제 #4
0
        // GET: DbStars/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            DbStar dbStar = db.DbStars.Find(id);

            if (dbStar == null)
            {
                return(HttpNotFound());
            }
            return(View(dbStar));
        }
예제 #5
0
        public ActionResult DeleteConfirmed(int id)
        {
            DbStar dbStar = db.DbStars.Find(id);

            if (dbStar.DbPlanets.Count > 0)
            {
                var firstPlanetId = dbStar.DbPlanets[0].Id;
                for (int i = firstPlanetId; i <= firstPlanetId + dbStar.DbPlanets.Count; i++)
                {
                    var planet = db.DbPlanets.Find(i);
                    db.DbPlanets.Remove(planet);
                }
            }
            db.DbStars.Remove(dbStar);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
        private ActionResult GenerateExcel()
        {
            DbStar[]   stars;
            DbPlanet[] planets;
            int[]      planetsCount;
            using (var db = new ApplicationDbContext())
            {
                stars        = db.DbStars.ToArray();
                planets      = db.DbPlanets.ToArray();
                planetsCount = new int[planets.Length];
                if (stars.Length < 1)
                {
                    throw new EmptyDbException();
                }
                for (int i = 0; i < stars.Length; i++)
                {
                    DbStar dbStar = db.DbStars.Find(stars[i].Id);
                    planetsCount[i] = dbStar.DbPlanets.Count;
                }
            }

            var      filePath  = HostingEnvironment.ApplicationVirtualPath + "Files/База астроданных.xlsx";
            FileInfo excelInfo = new FileInfo(Server.MapPath(filePath));

            if (excelInfo.Exists)
            {
                excelInfo.Delete();
            }

            ExcelPackage package = new ExcelPackage(excelInfo);

            ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("База астроданных");

            worksheet.Cells[1, 1].Value = "KIC ID";
            worksheet.Cells[1, 2].Value = "Teff";
            worksheet.Cells[1, 3].Value = "Logg";
            worksheet.Cells[1, 4].Value = "Fe/H";
            worksheet.Cells[1, 5].Value = "Mass";
            worksheet.Cells[1, 6].Value = "Radius";
            worksheet.Cells[1, 7].Value = "Planet Name";
            worksheet.Cells[1, 8].Value = "Planet Radius";

            int row         = 2;
            int planetIndex = 0;

            for (int i = 0; i < stars.Length; i++)
            {
                worksheet.Cells[row, 1].Value = stars[i].KIC_ID;
                worksheet.Cells[row, 2].Value = stars[i].Teff;
                worksheet.Cells[row, 3].Value = stars[i].Logg;
                worksheet.Cells[row, 4].Value = stars[i].FeH;
                worksheet.Cells[row, 5].Value = stars[i].Mass;
                worksheet.Cells[row, 6].Value = stars[i].Radius;
                int k = 0;
                for (int j = planetIndex; j < planetIndex + planetsCount[i]; j++)
                {
                    worksheet.Cells[row + k, 7].Value = planets[j].Name;
                    worksheet.Cells[row + k, 8].Value = planets[j].Radius;
                    k++;
                }
                planetIndex += planetsCount[i];
                if (planetsCount[i] != 0)
                {
                    row += planetsCount[i];
                }
                else
                {
                    row++;
                }
            }

            package.Save();

            return(File(filePath, "application/ooxml", "База астроданных.xlsx"));
        }