Files
everything/EveryThing/Pages/Projects/CreatePartItemUploadExcel.cshtml.cs
David Štaleker db0cc8d3de prvi
2025-07-18 05:33:16 +02:00

127 lines
4.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.AspNetCore.Mvc.Rendering;
using EveryThing.Data;
using EveryThing.Models;
using EveryThing.Models.Project;
using Microsoft.AspNetCore.Http;
using System.IO;
using Microsoft.AspNetCore.Hosting;
namespace EveryThing.Pages.Projects
{
[Authorize(Roles = "Administrator,ProjecThingUser")]
public class CreatePartItemUploadExcelModel : PageModel
{
private readonly IWebHostEnvironment _hostingEnvironment;
private readonly ApplicationDbContext _context;
private readonly UserManager<IdentityApplicationUser> _userManager;
private readonly SignInManager<IdentityApplicationUser> _loginManager;
private readonly RoleManager<IdentityApplicationRole> _roleManager;
public CreatePartItemUploadExcelModel(ApplicationDbContext context, UserManager<IdentityApplicationUser> userManager, SignInManager<IdentityApplicationUser> loginManager, RoleManager<IdentityApplicationRole> roleManager, IWebHostEnvironment environment)
{
_context = context;
_userManager = userManager;
_loginManager = loginManager;
_roleManager = roleManager;
_hostingEnvironment = environment;
}
[BindProperty]
public IFormFile File { get; set; }
[BindProperty]
public int IdProject { get; set; }
[BindProperty]
public int IdProjectPart { get; set; }
public IActionResult OnGet(int idProject, int idProjectPart)
{
var user = _userManager.GetUserAsync(User).Result;
IdProject = idProject;
IdProjectPart = idProjectPart;
return Page();
}
//public async Task<IActionResult> OnPostAsync()
//{
// if (!ModelState.IsValid)
// {
// return Page();
// }
// string uploads = Path.Combine(_hostingEnvironment.WebRootPath, "uploads");
// if (File.Length > 0)
// {
// string filePath = Path.Combine(uploads, File.FileName);
// using (Stream fileStream = new FileStream(filePath, FileMode.Create))
// {
// await File.CopyToAsync(fileStream);
// }
// }
// return RedirectToPage("./Edit");
//}
//public async Task<IActionResult> OnPostUploadAsync(List<IFormFile> files)
//{
// long size = files.Sum(f => f.Length);
// foreach (var formFile in files)
// {
// if (formFile.Length > 0)
// {
// var filePath = Path.GetTempFileName();
// System.Diagnostics.Debug.WriteLine(filePath);
// using (var stream = System.IO.File.Create(filePath))
// {
// await formFile.CopyToAsync(stream);
// }
// }
// }
// // Process uploaded files
// // Don't rely on or trust the FileName property without validation.
// return RedirectToPage("./Edit");
//}
public async Task<IActionResult> OnPostUpload(int idProject, int idProjectPart, List<IFormFile> postedFiles)
{
if (postedFiles == null
|| postedFiles.Count != 1)
{
return Page();//TODO return error
}
string path = Path.Combine(_hostingEnvironment.WebRootPath, "Uploads");
if (!Directory.Exists(path))
{
Directory.CreateDirectory(path);
}
List<string> uploadedFiles = new List<string>();
var postedFile = postedFiles[0];
string fileName = Guid.NewGuid().ToString().Replace("-", "_") + Path.GetExtension(postedFile.FileName);
using (FileStream stream = new FileStream(Path.Combine(path, fileName), FileMode.Create))
{
postedFile.CopyTo(stream);
uploadedFiles.Add(fileName);
}
return RedirectToPage("./CreatePartItemImportExcel", new { idProject = idProject, idProjectPart = idProjectPart, fileName = fileName});
}
}
}