ScriptWeb

Run Settings
LanguageC#
Language Version
Run Command
using Microsoft.AspNetCore.Http; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using PC_BT_MODUL3.Models; using PC_BT_MODUL3.ViewModels; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Authentication.JwtBearer; using System.Text.Json; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using Microsoft.IdentityModel.Tokens; using System.Text; namespace PC_BT_MODUL3.Service { public class EsemkaService : BaseService { private IConfiguration con; private ResponseService Result = new ResponseService(); public EsemkaService(EsemkaTodoContext db, string email, IConfiguration con) : base(db,email) { this.db = db; this.con = con; } #region AUTH public async Task<ResponseService> Auth(vUserLogin vUser) { var cekUser = await db.Users.Where(a => a.Email == vUser.Email && a.Password == vUser.Password).FirstOrDefaultAsync(); if (cekUser == null) { Result.codeStatus = StatusCodes.Status404NotFound; return Result; } var claim = new[] { new Claim("Email", cekUser.Email) }; var Key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(con["Jwt:Key"])); var SignIn = new SigningCredentials(Key, SecurityAlgorithms.HmacSha256); var Token = new JwtSecurityToken( con["Jwt:Issuer"], con["Jwt:Audience"], claims: claim, expires: DateTime.Now.AddMinutes(10), signingCredentials: SignIn); var Hasil = new JwtSecurityTokenHandler().WriteToken(Token); Result.data = Hasil; return Result; } public async Task<ResponseService> AuthMe() { if (baseUser != null) { vUser v = new vUser(); v.DateOfBirth = baseUser.DateOfBirth; v.Email = baseUser.Email; v.Gender = baseUser.Gender == 1 ? enumGender.Male.ToString() : enumGender.Female.ToString(); v.Name = baseUser.Name; v.Role = baseUser.Role == 1 ? enumRole.Admin.ToString() : enumRole.User.ToString(); Result.data = v; return Result; } return Result; } #endregion #region USER public async Task<ResponseService> DeleteUser(string email) { if (cekUserRole()) { Result.codeStatus = StatusCodes.Status400BadRequest; return Result; } var user = await db.Users.Where(a => a.Email == email).FirstOrDefaultAsync(); if (user == null) { Result.codeStatus = StatusCodes.Status404NotFound; return Result; } db.Users.Remove(user); await db.SaveChangesAsync(); return Result; } public async Task<ResponseService> PostUser(vUserReq user) { if (cekUserRole()) { Result.codeStatus = StatusCodes.Status400BadRequest; return Result; } var cekUser = await db.Users.Where(a => a.Email == user.Email).FirstOrDefaultAsync(); if (cekUser != null) { Result.codeStatus = StatusCodes.Status409Conflict; return Result; } User us = new User(); us.Email = user.Email; us.DateOfBirth = user.DateOfBirth; us.Gender = user.Gender == "Male" ? (int)enumGender.Male : (int)enumGender.Female; us.Name = user.Name; us.Password = user.Password; us.Role = user.Role == "Admin" ? (int)enumRole.Admin : (int)enumRole.User; db.Add(us); await db.SaveChangesAsync(); Result.data = user; return Result; } public async Task<ResponseService> GetUserTodoItems(string email) { if (cekUserRole()) { Result.codeStatus = StatusCodes.Status400BadRequest; return Result; } List<TodoItem> cekUserTodo = await db.TodoItems.Where(a => a.CreatedByEmail == email).ToListAsync(); if (cekUserTodo.Count == 0) { Result.codeStatus = StatusCodes.Status404NotFound; return Result; } List<vUserTodoItems> x = new List<vUserTodoItems>(); foreach (var item in cekUserTodo) { vUserTodoItems v = new vUserTodoItems(); v.Id = item.Id; v.Name = item.Name; v.Description = item.Description; v.IsComplete = item.IsComplete; v.DueAt = item.DueAt; v.CreatedAt = item.CreatedAt; v.CompletedAt = item.CompletedAt; x.Add(v); } Result.data = x; return Result; } public async Task<ResponseService> GetUser(string email) { if (cekUserRole()) { Result.codeStatus = StatusCodes.Status400BadRequest; return Result; } var cekUser = await db.Users.Where(a => a.Email == email).FirstOrDefaultAsync(); if (cekUser == null) { Result.codeStatus = StatusCodes.Status404NotFound; return Result; } vUserReq us = new vUserReq(); us.Email = cekUser.Email; us.DateOfBirth = cekUser.DateOfBirth; us.Gender = cekUser.Gender == 1 ? enumGender.Male.ToString() : enumGender.Female.ToString(); us.Name = cekUser.Name; us.Password = cekUser.Password; us.Role = cekUser.Role == 1 ? enumRole.Admin.ToString() : enumRole.User.ToString(); Result.data = us; return Result; } public async Task<ResponseService> PutUser(string email, vUserReq user) { if (cekUserRole()) { Result.codeStatus = StatusCodes.Status400BadRequest; return Result; } User cekUser = await db.Users.Where(a => a.Email == email).FirstOrDefaultAsync(); var cekEmail = await db.Users.Where(a => a.Email == email).FirstOrDefaultAsync(); if (email != user.Email) { Result.codeStatus = StatusCodes.Status400BadRequest; return Result; } if (cekUser == null) { Result.codeStatus = StatusCodes.Status404NotFound; return Result; } if (cekUser.Email != user.Email) { if (cekEmail != null) { Result.codeStatus = StatusCodes.Status409Conflict; return Result; } cekUser.DateOfBirth = user.DateOfBirth; cekUser.Gender = user.Gender == "Male" ? (int)enumGender.Male : (int)enumGender.Female; cekUser.Name = user.Name; cekUser.Password = user.Password; cekUser.Role = user.Role == "Admin" ? (int)enumRole.Admin : (int)enumRole.User; await db.SaveChangesAsync(); Result.data = cekUser; return Result; } else { cekUser.DateOfBirth = user.DateOfBirth; cekUser.Gender = user.Gender == "Male" ? (int)enumGender.Male : (int)enumGender.Female; cekUser.Name = user.Name; cekUser.Password = user.Password; cekUser.Role = user.Role == "Admin" ? (int)enumRole.Admin : (int)enumRole.User; await db.SaveChangesAsync(); Result.data = cekUser; return Result; } } public async Task<ResponseService> GetUsers(int id) { if (cekUserRole()) { Result.codeStatus = StatusCodes.Status400BadRequest; return Result; } int limit = 10; var a = await db.Users.ToListAsync(); List<vUserReq> vUserReqs = new List<vUserReq>(); if (id > 0) { var skip = limit * (id - 1); a.Skip(skip).Take(limit).ToList(); } else { a.ToList(); } Result.data = a; return Result; } #endregion #region TODOITEMS public async Task<ResponseService> GetTodoItems( int page = 1) { int limit = 10; var a = db.TodoItems.ToList(); List<vTodoItems> vUserReqs = new List<vTodoItems>(); if (page > 0) { var skip = limit * (page - 1); a.Skip(skip).Take(limit).ToList(); } else { a.ToList(); } Result.data = a; return Result; } public async Task<ResponseService> PostTodoItem(vTodoItems todoItem) { var cekTodo = await db.TodoItems.Where(a => a.Name == todoItem.Name).FirstOrDefaultAsync(); if (cekTodo != null) { Result.codeStatus = StatusCodes.Status409Conflict; return Result; } TodoItem vTodo = new TodoItem(); vTodo.Id = Guid.NewGuid(); vTodo.Name = todoItem.Name; vTodo.Description = todoItem.Description; vTodo.IsComplete = todoItem.IsComplete; vTodo.DueAt = DateTime.Now; vTodo.CreatedAt = DateTime.Now; vTodo.CompletedAt = todoItem.IsComplete == true ? DateTime.Now : (DateTime?)null; vTodo.CreatedByEmail = baseUser.Email; db.Add(vTodo); await db.SaveChangesAsync(); Result.data = todoItem; return Result; } public async Task<ResponseService> GetTodoItem(Guid id) { var cekTodo = await db.TodoItems.Where(a => a.Id == id).FirstOrDefaultAsync(); if (cekTodo == null) { Result.codeStatus = StatusCodes.Status404NotFound; return Result; } vTodoItemsResult us = new vTodoItemsResult(); us.Id = cekTodo.Id; us.Name = cekTodo.Name; us.Description = cekTodo.Description; us.IsComplete = cekTodo.IsComplete; us.DueAt = cekTodo.DueAt; us.CreatedAt = cekTodo.CreatedAt; us.CompletedAt = cekTodo.CompletedAt; Result.data = us; return Result; } public async Task<ResponseService> PutTodoItem(Guid id, vTodoItems todoItem) { TodoItem cekTodo = await db.TodoItems.Where(a => a.Id == id).FirstOrDefaultAsync(); var cekTodoName = await db.TodoItems.Where(a => a.Name == todoItem.Name).FirstOrDefaultAsync(); if (cekTodo == null) { Result.codeStatus = StatusCodes.Status404NotFound; return Result; } if (cekTodo.Name != todoItem.Name) { if (cekTodoName != null) { Result.codeStatus = StatusCodes.Status409Conflict; return Result; } cekTodo.Name = todoItem.Name; cekTodo.Description = todoItem.Description; cekTodo.IsComplete = todoItem.IsComplete; cekTodo.DueAt = todoItem.DueAt; cekTodo.CompletedAt = todoItem.IsComplete == true ? DateTime.Now : (DateTime?)null; await db.SaveChangesAsync(); Result.data = todoItem; return Result; } else { cekTodo.Description = todoItem.Description; cekTodo.IsComplete = todoItem.IsComplete; cekTodo.DueAt = todoItem.DueAt; cekTodo.CompletedAt = todoItem.IsComplete == true ? DateTime.Now : (DateTime?)null; await db.SaveChangesAsync(); Result.data = todoItem; return Result; } } #endregion #region Order Header public async Task<ResponseService> Menu(vHeader x) { Guid idHeader = Guid.NewGuid(); Guid idItem = Guid.NewGuid(); Guid idDetail = Guid.NewGuid(); Header h = new Header(); h.Id = idHeader; h.Name = x.Name; Item i = new Item(); i.Id = idItem; i.Type = x.DetailViews.ItemView.Type; i.Name = x.DetailViews.ItemView.Name; Detail d = new Detail(); d.Id = idDetail; d.HeaderId = idHeader; d.Price = x.DetailViews.Price; d.Qty = x.DetailViews.Qty; d.ItemId = idItem; db.Add(h); db.Add(i); db.Add(d); await db.SaveChangesAsync(); Result.data = x; return Result; } public async Task<ResponseService> GetMenu() // Masih Burik { List<Header> headers = await db.Headers.Select(a => a).ToListAsync(); List<Item> items = await db.Items.Select(a => a).ToListAsync(); List<Detail> details = await db.Details.Select(a => a).ToListAsync(); List<vHeader> v = new List<vHeader>(); foreach (var item in headers) { vHeader x = new vHeader(); x.Id = item.Id; x.Name = item.Name; v.Add(x); } foreach (var item in details) { vHeader x = new vHeader(); x.DetailViews.Id = item.Id; //'Object reference not set to an instance of an object.' x.DetailViews.HeaderId = item.HeaderId; x.DetailViews.Price = item.Price; x.DetailViews.Qty = item.Qty; x.DetailViews.ItemId = item.ItemId; v.Add(x); } foreach (var item in items) { vHeader x = new vHeader(); x.DetailViews.ItemView.Id = item.Id; x.DetailViews.ItemView.Name = item.Name; x.DetailViews.ItemView.Type = item.Type; v.Add(x); } Result.data = v; return Result; } public async Task<ResponseService> PutMenu(Guid id, vHeader x) { if (id != x.Id) { Result.codeStatus = StatusCodes.Status400BadRequest; return Result; } Header header = await db.Headers.Where(a => a.Id == x.Id).FirstOrDefaultAsync(); Item item = await db.Items.Where(a => a.Id == x.DetailViews.ItemView.Id).FirstOrDefaultAsync(); Detail detail = await db.Details.Where(a => a.Id == x.DetailViews.Id).FirstOrDefaultAsync(); if (header == null || item == null || detail == null) { Result.codeStatus = StatusCodes.Status400BadRequest; return Result; } header.Name = x.Name; detail.Price = x.DetailViews.Price; detail.Qty = x.DetailViews.Qty; item.Name = x.DetailViews.ItemView.Name; item.Type = x.DetailViews.ItemView.Type; await db.SaveChangesAsync(); return Result; } public async Task<ResponseService> DeleteMenu(Guid id) { Header header = await db.Headers.Where(a => a.Id == id).FirstOrDefaultAsync(); Detail detail = await db.Details.Where(a => a.HeaderId == header.Id).FirstOrDefaultAsync(); Item item = await db.Items.Where(a => a.Id == detail.ItemId).FirstOrDefaultAsync(); db.Remove(header); db.Remove(detail); db.Remove(item); await db.SaveChangesAsync(); return Result; } #endregion } }
Editor Settings
Theme
Key bindings
Full width
Lines