Skip to content
This repository was archived by the owner on Dec 27, 2022. It is now read-only.

Commit 3b790c0

Browse files
committed
Orders Entity
1 parent d9860bd commit 3b790c0

File tree

13 files changed

+496
-0
lines changed

13 files changed

+496
-0
lines changed
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
using BackendAPI.Models;
6+
using Microsoft.AspNetCore.Authorization;
7+
using Microsoft.AspNetCore.Mvc;
8+
9+
// For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
10+
11+
namespace BackendAPI.Controllers
12+
{
13+
[ApiController]
14+
[Route("api/[controller]")]
15+
public class OrderController : Controller
16+
{
17+
private DataBaseContext order_context;
18+
public OrderController(DataBaseContext order_context)
19+
{
20+
this.order_context = order_context;
21+
}
22+
23+
// CREATE
24+
[HttpPost]
25+
public string Post([FromBody] Order transaction)
26+
{
27+
this.order_context.Orders.Add(transaction);
28+
this.order_context.SaveChanges();
29+
return "Order sent successfully!";
30+
}
31+
32+
33+
// GET ORDERS
34+
[Authorize(Roles = "Admin")]
35+
[HttpGet("order")]
36+
public IEnumerable<UserOrder> GetOrder()
37+
{
38+
var usersOrder = from o in order_context.Set<Order>()
39+
join u in order_context.Set<Users>()
40+
on o.UserId equals u.UserId
41+
select new UserOrder
42+
{
43+
TransactionId = o.TransactionId,
44+
45+
MemberId = o.MemberId,
46+
ProductName = o.ProductName,
47+
RequiredDate = o.RequiredDate,
48+
Quantities = o.Quantities,
49+
UserId = o.UserId,
50+
FirstName = u.FirstName,
51+
LastName = u.LastName,
52+
Email = u.Email,
53+
};
54+
return usersOrder.ToList();
55+
}
56+
57+
[HttpGet("email/{email}")]
58+
public IEnumerable<UserOrder> GetOrderById(string email)
59+
{
60+
var usersOrder = from o in order_context.Set<Order>()
61+
join u in order_context.Set<Users>()
62+
on o.UserId equals u.UserId
63+
select new UserOrder
64+
{
65+
TransactionId = o.TransactionId,
66+
67+
MemberId = o.MemberId,
68+
ProductName = o.ProductName,
69+
RequiredDate = o.RequiredDate,
70+
Quantities = o.Quantities,
71+
72+
UserId = o.UserId,
73+
FirstName = u.FirstName,
74+
LastName = u.LastName,
75+
Email = u.Email,
76+
};
77+
return usersOrder.ToList().Where(x => x.Email == email);
78+
}
79+
80+
}
81+
}

backend/Entities/DataBaseContext.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public DataBaseContext(DbContextOptions<DataBaseContext> dbContextOptions) : bas
1010
}
1111
public DbSet<Users> User { get; set; }
1212
public DbSet<ContactUs> ContactMsg { get; set; }
13+
public DbSet<Order> Orders { get; set; }
1314

1415
// GIVING PREDIFINED DATA TO DATABASE
1516
// CREATING ADMIN USER
@@ -36,6 +37,18 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
3637
Email = "sample@localhost",
3738
Message = "Hello, I am sample user. I am facing some issues with the website. Please help me out."
3839
});
40+
41+
// ADDING DEFAULT ORDER DATA
42+
modelBuilder.Entity<Order>().HasData(
43+
new Order
44+
{
45+
TransactionId = 1,
46+
MemberId = 1,
47+
ProductName = "Product",
48+
RequiredDate = DateTime.Now,
49+
Quantities = 100,
50+
UserId = 1
51+
});
3952
}
4053
}
4154
}

backend/Models/Order/Order.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
using System;
2+
using System.Collections;
3+
using System.Collections.Generic;
4+
using System.ComponentModel.DataAnnotations;
5+
6+
namespace BackendAPI.Models
7+
{
8+
public class Order
9+
{
10+
[Key]
11+
public int TransactionId { get; set; }
12+
13+
14+
// BASIC DATA FIELD
15+
public long MemberId { get; set; }
16+
public string ProductName { get; set; }
17+
public DateTime RequiredDate { get; set; }
18+
public int Quantities { get; set; }
19+
20+
21+
// ADVANCED
22+
public Users User { get; set; }
23+
public int UserId { get; set; }
24+
25+
}
26+
}

backend/Models/Order/UserOrder.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using System;
2+
using System.Collections;
3+
using System.Collections.Generic;
4+
using System.ComponentModel.DataAnnotations;
5+
6+
namespace BackendAPI.Models
7+
{
8+
public class UserOrder
9+
{
10+
public int TransactionId { get; set; }
11+
12+
// BASIC DATA FIELD
13+
public long MemberId { get; set; }
14+
public string ProductName { get; set; }
15+
public DateTime RequiredDate { get; set; }
16+
public int Quantities { get; set; }
17+
18+
// ADVANCED
19+
public Users User { get; set; }
20+
public Order Order { get; set; }
21+
22+
// BASIC DATA FIELD
23+
public int UserId { get; set; }
24+
public string FirstName { get; set; }
25+
public string LastName { get; set; }
26+
public string Email { get; set; }
27+
28+
}
29+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# Create Order
2+
3+
POST https://localhost:5001/api/order/
4+
Content-Type: application/json
5+
6+
{
7+
"MemberId":"2434",
8+
"ProductName": "ICICI",
9+
"RequiredDate": "1999-11-18T06:30:00",
10+
"Quantities": 2,
11+
"UserId":1
12+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# Order Details by Email
2+
3+
https://localhost:5001/api/order/email/admin@localhost
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Net.Http;
5+
using System.Net.Http.Headers;
6+
using System.Threading.Tasks;
7+
using Microsoft.AspNetCore.Authorization;
8+
using Microsoft.AspNetCore.Http;
9+
using Microsoft.AspNetCore.Mvc;
10+
using Microsoft.Extensions.Configuration;
11+
using Newtonsoft.Json;
12+
using Frontend.Models;
13+
14+
// For more information on enabling MVC for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860
15+
16+
namespace Frontend.Controllers
17+
{
18+
19+
public class OrderController : Controller
20+
{
21+
private static HttpClient httpOrderClient = new HttpClient();
22+
public OrderController(IConfiguration configuration)
23+
{
24+
Configuration = configuration;
25+
}
26+
public IConfiguration Configuration { get; }
27+
28+
29+
30+
//CREATE
31+
[HttpGet]
32+
public async Task<IActionResult> Order()
33+
{
34+
ViewBag.LogMessage = HttpContext.Session.GetString("UserName");
35+
await Task.Delay(1000);
36+
return View();
37+
}
38+
39+
[HttpPost]
40+
public async Task<IActionResult> Order(Order orderNo)
41+
{
42+
43+
var serializedProductToCreate = JsonConvert.SerializeObject(orderNo);
44+
var request = new HttpRequestMessage(HttpMethod.Post, Configuration.GetValue<string>("WebAPIBaseUrl") + "/Order");
45+
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
46+
request.Content = new StringContent(serializedProductToCreate);
47+
request.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
48+
var response = await httpOrderClient.SendAsync(request);
49+
50+
if (response.IsSuccessStatusCode)
51+
{
52+
return RedirectToAction("OrderMessage", "Messages");
53+
}
54+
else
55+
{
56+
return RedirectToAction("Load4", "Error");
57+
}
58+
59+
}
60+
61+
62+
63+
//INDEX
64+
[HttpGet]
65+
public async Task<IActionResult> Index()
66+
{
67+
httpOrderClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
68+
httpOrderClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", HttpContext.Session.GetString("token"));
69+
var response = await httpOrderClient.GetAsync(Configuration.GetValue<string>("WebAPIBaseUrl") + "/Order/Order");
70+
var content = await response.Content.ReadAsStringAsync();
71+
72+
ViewBag.LogMessage = HttpContext.Session.GetString("UserName");
73+
74+
if (response.IsSuccessStatusCode)
75+
{
76+
var orderNo = new List<Order>();
77+
if (response.Content.Headers.ContentType.MediaType == "application/json")
78+
{
79+
orderNo = JsonConvert.DeserializeObject<List<Order>>(content);
80+
}
81+
return View(orderNo);
82+
}
83+
else
84+
{
85+
return RedirectToAction("Load4", "Error");
86+
}
87+
}
88+
89+
90+
//MyOrder
91+
[HttpGet]
92+
public async Task<IActionResult> MyOrder(string email)
93+
{
94+
httpOrderClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
95+
httpOrderClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", HttpContext.Session.GetString("token"));
96+
var response = await httpOrderClient.GetAsync(Configuration.GetValue<string>("WebAPIBaseUrl") + $"/Order/Email/admin@localhost");
97+
var content = await response.Content.ReadAsStringAsync();
98+
99+
ViewBag.LogMessage = HttpContext.Session.GetString("UserName");
100+
101+
if (response.IsSuccessStatusCode)
102+
{
103+
var orderNo = new List<Order>();
104+
if (response.Content.Headers.ContentType.MediaType == "application/json")
105+
{
106+
orderNo = JsonConvert.DeserializeObject<List<Order>>(content);
107+
}
108+
return View(orderNo);
109+
}
110+
else
111+
{
112+
return RedirectToAction("Load4", "Error");
113+
}
114+
}
115+
116+
}
117+
}

frontend/Models/Order/Order.cs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using System;
2+
using System.Collections;
3+
using System.Collections.Generic;
4+
using System.ComponentModel.DataAnnotations;
5+
6+
namespace Frontend.Models
7+
{
8+
public class Order
9+
{
10+
[Key]
11+
public int TransactionId { get; set; }
12+
13+
// BASIC DATA FIELD
14+
public long MemberId { get; set; }
15+
public string ProductName { get; set; }
16+
public DateTime RequiredDate { get; set; }
17+
public int Quantities { get; set; }
18+
19+
// ADVANCED
20+
public Users User { get; set; }
21+
public int UserId { get; set; }
22+
23+
public string Email { get; set; }
24+
}
25+
}

frontend/Models/Order/UserOrder.cs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
using System;
2+
using System.Collections;
3+
using System.Collections.Generic;
4+
using System.ComponentModel.DataAnnotations;
5+
6+
namespace Frontend.Models
7+
{
8+
public class UserOrder
9+
{
10+
public int TransactionId { get; set; }
11+
12+
// BASIC DATA FIELD
13+
public long MemberId { get; set; }
14+
public string ProductName { get; set; }
15+
public DateTime RequiredDate { get; set; }
16+
public int Quantities { get; set; }
17+
18+
// ADVANCED
19+
public Users User { get; set; }
20+
public Order Order { get; set; }
21+
22+
// BASIC DATA FIELD
23+
public int UserId { get; set; }
24+
public string FirstName { get; set; }
25+
public string LastName { get; set; }
26+
public string Email { get; set; }
27+
28+
}
29+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
@{
2+
ViewBag.Title = "Order recieved";
3+
}
4+
5+
<style>
6+
main,
7+
body,
8+
html,
9+
.container {
10+
width: 100% !important;
11+
max-width: 10000px;
12+
height: 100% !important;
13+
padding: 0px !important;
14+
margin: 0px !important;
15+
margin-top: 65px !important;
16+
}
17+
18+
::-webkit-scrollbar {
19+
width: 10px;
20+
display: none;
21+
}
22+
</style>
23+
24+
<div class="sectioN sectioNG noSelect">
25+
<h2>Your <span style="font-weight: 800">order</span> was <span style="font-weight: 800">recieved successfully</span>
26+
</h2>
27+
<h2>We would get back to you soon</h2>
28+
</div>
29+
30+
<script>
31+
setTimeout(function () {
32+
window.location.href = 'https://localhost:5002/';
33+
}, 7000);
34+
</script>

0 commit comments

Comments
 (0)