Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 12 additions & 22 deletions controls/admin.js
Original file line number Diff line number Diff line change
Expand Up @@ -138,17 +138,10 @@ helper.getQuestion = async (req, res, next) => {
helper.createContest = async (req, res, next) => {

/**Creating an object for new contest */
var newContest = {
code: req.body.contestCode,
name: req.body.contestName,
date: req.body.date + " " + req.body.startTime,
endDate: 0,
duration: req.body.duration,
visible: req.body.visibility,
problemsID: req.body.problemsID.split(",").map(qID => qID.trim())
};
var newContest = req.body.newContest;

newContest.endDate = moment(newContest.date).add(newContest.duration,'m').toDate();
console.log(newContest)
console.log(newContest);
var flag_contest = 0;
await contests.findOne({"code": newContest.code})
.then((data) => {
Expand All @@ -162,15 +155,19 @@ helper.createContest = async (req, res, next) => {
await contests.create(newContest)
.then((val) => {
console.log(val);
res.send(`Contest created successfully with code ${newContest.code}.`);
})
.catch((err) => {
console.log(err);
res.send("Error occurred while creating the contest.");
})
res.redirect("/admin/my-contests");

// res.redirect("/admin/my-contests");
}
else {
console.log("Inside flag_contest = 1")
res.redirect("/admin/new-contest");
console.log("Inside flag_contest = 1");
res.send("The contest with same code already exists !, try different code");

}
}

Expand Down Expand Up @@ -231,15 +228,8 @@ helper.displayEditContest = async (req, res, next) => {
*/
helper.editContest = async (req, res, next) => {
/**Getting data from each fields in the edit contest form */
var editContest = {
code: req.params.contCode,
name: req.body.contestName,
date: req.body.date + " " + req.body.startTime,
duration: req.body.duration,
visible: req.body.visibility,
/**comma separated qID of the problems to be included in the contest */
problemsID: req.body.problemsID.split(",").map(qID => qID.trim())
};
var editContest = req.body.editContest;
editContest.code = req.params.contCode;
editContest.endDate = moment(editContest.date).add(editContest.duration,'m').toDate();

await contests.update({ code: req.params.contCode }, editContest)
Expand Down
76 changes: 76 additions & 0 deletions public/js/edit_contest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
const settings = {
async: true,
crossDomain: true,
url: window.location.href,
method: "POST",
headers: {
"Content-Type": "application/json",
"cache-control": "no-cache",
},
processData: false,
data: "_fill",
};


$(".submit").on('click', function(){

//disable button
$('.submit').toggleClass('is-loading');

// creating contest object
const editContest = {

name: $("#contestName").val(),
date: $("#date").val()+" "+$("#startTime").val(),
endDate:0,
duration: $("#duration").val(),
visible: $("#visibility").val(),
problemsID: $("#problemsID").val().split(",").map(qID => qID.trim())

};

// console.log(newContest);

// Check whether all star marked fields have value or not
function check(data) {
if(data !== null && data !== '' && data !== undefined){
return true;
}
return false;
}

if(check(editContest.name) && check(editContest.date) && check(editContest.duration) && check(editContest.visible)) {
// Works fine;
;
}
else {
window.alert("All star marked fields must be non-empty!");
//enable button
$('.submit').toggleClass('is-loading');
return 0;
}

if(editContest.visible !== '1' && editContest.visible!=='0') {
window.alert("The value of visibility can be 1 or 0 only.");
//enable button
$('.submit').toggleClass('is-loading');
return 0;
}



//send data to server;
const data = {
editContest
};
settings.data = JSON.stringify(data);
$.ajax(settings).done(function (response) {
//enable button
$('.submit').toggleClass('is-loading');

//show response
window.alert(response);

});

});
79 changes: 79 additions & 0 deletions public/js/new_contest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
const settings = {
async: true,
crossDomain: true,
url: "/admin/new-contest",
method: "POST",
headers: {
"Content-Type": "application/json",
"cache-control": "no-cache",
},
processData: false,
data: "_fill",
};


$(".submit").on('click', function(){

//disable button
$('.submit').toggleClass('is-loading');

// creating contest object
const newContest = {

code: $("#contestCode").val(),
name: $("#contestName").val(),
date: $("#date").val()+" "+$("#startTime").val(),
endDate:0,
duration: $("#duration").val(),
visible: $("#visibility").val(),
problemsID: $("#problemsID").val().split(",").map(qID => qID.trim())

};

// console.log(newContest);

// Check whether all star marked fields have value or not
function check(data) {
if(data !== null && data !== '' && data !== undefined){
return true;
}
return false;
}

if(check(newContest.code) && check(newContest.name) && check(newContest.date) && check(newContest.duration) && check(newContest.visible)) {
// Works fine;
;
}
else {
window.alert("All star marked fields must be non-empty!");
//enable button
$('.submit').toggleClass('is-loading');
return 0;
}

if(newContest.visible !== 1 && newContest.visible!==0) {
window.alert("The value of visibility can be 1 or 0 only.");
//enable button
$('.submit').toggleClass('is-loading');
return 0;
}



//send data to server;
const data = {
newContest
};
settings.data = JSON.stringify(data);
$.ajax(settings).done(function (response) {
//enable button
$('.submit').toggleClass('is-loading');

//show response
window.alert(response);

//empty the input fields
$('input').val('');
});

});
20 changes: 10 additions & 10 deletions views/edit_contest.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,22 @@
<% include partials/header %>
</header>
<div class="main">
<form class="contest-form" action="/admin/edit-contest/<%= data.code %>" method="POST">
<form class="contest-form">
<h1><strong>EDIT CONTEST</strong></h1><br>
Contest Code: <span name="contestCode"><%= data.code %></span><br>
Contest Name: <input type="text" name="contestName" value="<%= data.name %>"><br>
Date: <input type="date" name="date" value="<%= data.YY %>-<%= data.MM %>-<%= data.DD %>"><br>
Starting Time: <input type="time" name="startTime" value="<%= data.TT %>"><br>
Duration (minutes): <input type="text" name="duration" value="<%= data.duration %>"><br>
Make the contest visible to the public? (1 for yes, 0 for no) <input type="text" name="visibility" value="<%= data.visible %>"><br>
Problems to be included (qID "," comma separated): <input type="text" name="problemsID" value="<%= data.problemsID %>"><br>
<button type="submit" class="btn btn-danger btn-md">Edit Contest</button>

Contest Code: <span name="contestCode" id="contestCode"><%= data.code %></span><br>
Contest Name: <span style="color:red">*</span> <input type="text" name="contestName" value="<%= data.name %>" id="contestName"><br>
Date: <span style="color:red">*</span> <input type="date" name="date" value="<%= data.YY %>-<%= data.MM %>-<%= data.DD %>" id="date"><br>
Starting Time: <span style="color:red">*</span> <input type="time" name="startTime" value="<%= data.TT %>" id="startTime"><br>
Duration (minutes): <span style="color:red">*</span> <input type="text" name="duration" value="<%= data.duration %>" id="duration"><br>
Make the contest visible to the public? (1 for yes, 0 for no) <span style="color:red">*</span> <input type="text" name="visibility" value="<%= data.visible ? '1': '0' %>" id="visibility"><br>
Problems to be included (qID "," comma separated): <input type="text" name="problemsID" value="<%= data.problemsID %>" id="problemsID"><br>
<button type="submit" class="button submit btn btn-danger btn-md">Edit Contest</button>
</form>
</div>
<footer>
<% include partials/footer %>
</footer>
</body>
<script src="/js/edit_contest.js" defer></script>

</html>
20 changes: 10 additions & 10 deletions views/new_contest.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@
<a href="/admin/manage-admins" style="font-size: 15px;">MANAGE ADMINS</a>
<h1 class="title center"> New Contests</h1>
<hr>
<form class="contest-form" action="/admin/new-contest" method="POST">
Contest Code: <span style="color:red">*</span><input type="text" name="contestCode"><br>
Contest Name: <span style="color:red">*</span><input type="text" name="contestName"><br>
Date: <span style="color:red">*</span><input type="date" name="date"><br>
Starting Time: <span style="color:red">*</span><input type="time" name="startTime"><br>
Duration (minutes): <span style="color:red">*</span><input type="text" name="duration"><br>
Make the contest visible to the public? (1 for yes, 0 for no) <span style="color:red">*</span><input type="text" name="visibility"><br>
Problems to be included (qID "," comma separated): <input type="text" name="problemsID"><br>
<button type="submit" class="btn btn-success btn-md">Create Contest</button>
<form class="contest-form">
Contest Code: <span style="color:red">*</span><input type="text" name="contestCode" class="input" id="contestCode"><br>
Contest Name: <span style="color:red">*</span><input type="text" name="contestName" class="input" id="contestName"><br>
Date: <span style="color:red">*</span><input type="date" name="date" class="input" id="date"><br>
Starting Time: <span style="color:red">*</span><input type="time" name="startTime" class="input" id="startTime"><br>
Duration (minutes): <span style="color:red">*</span><input type="text" name="duration" class="input" id="duration"><br>
Make the contest visible to the public? (1 for yes, 0 for no) <span style="color:red">*</span><input type="text" name="visibility" class="input" id="visibility"><br>
Problems to be included (qID "," comma separated): <input type="text" name="problemsID" class="input" id="problemsID"><br>
<button id ="submit" class="button is-link submit btn btn-success btn-md">Create Contest</button>
</form>
</div>
</div>
Expand All @@ -44,5 +44,5 @@
<% include partials/footer %>
</footer>
</body>

<script src="/js/new_contest.js" defer></script>
</html>