using SingerAPI_6.Entities;
using Microsoft.AspNetCore.Mvc;
using Microsoft.EntityFrameworkCore;
using MySqlX.XDevAPI;
using System.Collections.Generic;
using System.Net;
using System.Threading.Tasks;
using System.Linq;
using Microsoft.AspNetCore.Authorization;
using Org.BouncyCastle.Tls;
using static Microsoft.EntityFrameworkCore.DbLoggerCategory;
using System.ComponentModel.DataAnnotations;
namespace SingerAPI_6.Controllers
{
[Authorize]
[ApiController]
[Route("api/[controller]")]
public class UserController : ControllerBase
{
private readonly DBContext DBCon;
public UserController(DBContext DBConte)
{
DBCon = DBConte;
}
[HttpGet("GetUsers")]
public async Task<ActionResult<List<User>>> GetUser()
{
var list = await DBCon.department.Select(
s => new User()
{
id = s.id,
FirstName = s.FirstName,
LastName = s.LastName,
Gender = s.Gender,
DeptName = s.DeptName
}
).ToListAsync();
if (list.Count < 0)
{
return NotFound();
}
else
{
return list;
}
}
[HttpGet("GetUserbyid")]
public async Task<ActionResult<User>> GetUserbyid(int id , Stu stu)
{
User user = await DBCon.department.Select(
s => new User
{
id = s.id,
FirstName = s.FirstName,
LastName = s.LastName,
Gender = s.Gender,
DeptName = s.DeptName,
})
.FirstAsync(s => s.id == id);
if (user == null)
{
return NotFound();
}
else if(stu == Stu.First)
{
return Ok(user);
}
else if(stu == Stu.All)
{
var list = await DBCon.department.Select(
s => new User()
{
id = s.id,
FirstName = s.FirstName,
LastName = s.LastName,
Gender = s.Gender,
DeptName = s.DeptName
}
).ToListAsync();
if (list.Count < 0)
{
return NotFound();
}
else
{
return Ok(list);
}
}
else if(stu == Stu.Last)
{
User users = await DBCon.department.Select(
s => new User
{
id = s.id,
FirstName = s.FirstName,
LastName = s.LastName,
Gender = s.Gender,
DeptName = s.DeptName,
})
.LastAsync(s =>s.id == id);
if(users == null)
{
return NotFound();
}
else
{
return users;
}
}
else
{
return NotFound();
}
}
[HttpPost("insertData")]
public async Task<HttpStatusCode> AddData([FromForm]User User)
{
var entity = new User()
{
id = User.id,
FirstName = User.FirstName,
LastName = User.LastName,
Gender = User.Gender,
DeptName = User.DeptName,
FileUpload = User.FileUpload
};
var saveFilePath = Path.Combine("c:\\savefilepath\\", User.FileUpload.FileName);
using (var stream = new FileStream(saveFilePath, FileMode.Create))
{
User.FileUpload.CopyToAsync(stream);
}
DBCon.department.Add(entity);
await DBCon.SaveChangesAsync();
return HttpStatusCode.Created;
}
[HttpPut("UpdateUser")]
public async Task<HttpStatusCode> UpdateUser(User User)
{
var entity = await DBCon.department
.FirstOrDefaultAsync(s => s.id == User.id);
entity.id = User.id;
entity.FirstName = User.FirstName;
entity.LastName = User.LastName;
entity.Gender = User.Gender;
entity.DeptName = User.DeptName;
await DBCon.SaveChangesAsync();
return HttpStatusCode.OK;
}
[HttpPut("UpdateUserDept")]
public async Task<HttpStatusCode> UpdateUserDept(User User)
{
var entity = await DBCon.department.FirstOrDefaultAsync(s => s.id == User.id);
entity.DeptName = User.DeptName;
await DBCon.SaveChangesAsync();
return HttpStatusCode.OK;
}
[HttpDelete("deletebyId")]
public async Task<HttpStatusCode> DeleteUser(int id)
{
var entity = new User()
{
id = id
};
DBCon.department.Attach(entity);
DBCon.department.Remove(entity);
await DBCon.SaveChangesAsync();
return HttpStatusCode.OK;
}
}
}
What I have tried:
using Microsoft.AspNetCore.Mvc;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace SingerAPI_6.Entities
{
public class User
{
public int id { get; set; }
public string? FirstName { get; set; }
public string? LastName { get; set; }
public string? Gender { get; set; }
public string? DeptName { get; set; }
[NotMapped]
public IFormFile FileUpload { get; set; }
}
}