//Jaimeiris - edits an evaluation that was previously made about a submission //If the evaluator asked for a final version of the submission, the system sends an email to the submitter to add a final version of the submission public bool editEvaluation(evaluationsubmitted evaluation, usersubmission userSubIn) { try { using (conferenceadminContext context = new conferenceadminContext()) { bool isFinalSubmission = context.usersubmission.Where(c => c.finalSubmissionID == userSubIn.initialSubmissionID).FirstOrDefault() == null ? false : (context.usersubmission.Where(d => d.initialSubmissionID == userSubIn.initialSubmissionID).FirstOrDefault() == null ? true : false); usersubmission userSub; evaluationsubmitted dbEvaluation = context.evaluationsubmitteds.Where(c => c.evaluationsubmittedID == evaluation.evaluationsubmittedID).FirstOrDefault(); dbEvaluation.deleted = false; //updates evaluation if (evaluation.evaluationName != null || evaluation.evaluationFile != null) { dbEvaluation.evaluationName = evaluation.evaluationName; dbEvaluation.evaluationFile = evaluation.evaluationFile; } dbEvaluation.score = evaluation.score; dbEvaluation.publicFeedback = evaluation.publicFeedback; dbEvaluation.privateFeedback = evaluation.privateFeedback; var evaluatorSub = dbEvaluation.evaluatiorsubmission; //marks evaluator submission as evaluated if (evaluatorSub != null) { dbEvaluation.evaluatiorsubmission.statusEvaluation = "Evaluated"; } if (isFinalSubmission) { userSub = context.usersubmission.Where(c => c.finalSubmissionID == userSubIn.initialSubmissionID).FirstOrDefault(); } else { userSub = context.usersubmission.Where(c => c.initialSubmissionID == userSubIn.initialSubmissionID).FirstOrDefault(); userSub.allowFinalVersion = userSubIn.allowFinalVersion; } context.SaveChanges(); //sends email if final version was asked if (userSubIn.allowFinalVersion == true) { String email = null; email = (context.usersubmission.Where(c => c.initialSubmissionID == userSubIn.initialSubmissionID).FirstOrDefault() == null ? null : context.usersubmission.Where(c => c.initialSubmissionID == userSubIn.initialSubmissionID).FirstOrDefault().user.membership.email); if (email == null) email = context.usersubmission.Where(c => c.finalSubmissionID == userSubIn.initialSubmissionID).FirstOrDefault() == null ? null : context.usersubmission.Where(c => c.finalSubmissionID == userSubIn.initialSubmissionID).FirstOrDefault().user.membership.email; try { sendFinalVersionAllowedEmail(email, context.submissions.Where(c => c.submissionID == userSubIn.initialSubmissionID).FirstOrDefault().title); } catch (Exception ex) { Console.Write("SubmissionManager.editEvaluation error " + ex); return false; } } return true; } } catch (Exception ex) { Console.Write("SubmissionManager.editEvaluation error " + ex); return false; } }
//Jaimeiris - This adds the submission when it is added by an administrator public Submission addSubmissionByAdmin(usersubmission usersubTA, submission submissionToAdd, panel pannelToAdd, workshop workshopToAdd) { try { using (conferenceadminContext context = new conferenceadminContext()) { submission sub = new submission(); //for all types of submissions //table submission sub.topicID = submissionToAdd.topicID; sub.submissionTypeID = submissionToAdd.submissionTypeID; sub.submissionAbstract = submissionToAdd.submissionAbstract; sub.title = submissionToAdd.title; sub.status = "Pending"; sub.creationDate = DateTime.Now; sub.deleted = false; sub.byAdmin = true; context.submissions.Add(sub); context.SaveChanges(); //table usersubmission long submissionID = sub.submissionID; usersubmission usersub = new usersubmission(); usersub.userID = usersubTA.userID; usersub.initialSubmissionID = submissionID; usersub.allowFinalVersion = false; usersub.deleted = false; usersub.finalSubmissionID = null; context.usersubmission.Add(usersub); context.SaveChanges(); //automatically apply user user user = context.users.Where(c => c.userID == usersubTA.userID).FirstOrDefault(); user.hasApplied = true; context.SaveChanges(); /*/table documents submitted if (submissionToAdd.submissionTypeID != 4) { documentssubmitted subDocs = new documentssubmitted(); foreach (var doc in submissionToAdd.documentssubmitteds) { subDocs.submissionID = submissionID; subDocs.documentName = doc.documentName; subDocs.document = doc.document; subDocs.deleted = false; context.documentssubmitteds.Add(subDocs); context.SaveChanges(); } }*/ //table pannels if (submissionToAdd.submissionTypeID == 3 && pannelToAdd != null) { panel subPanel = new panel(); subPanel.submissionID = submissionID; subPanel.panelistNames = pannelToAdd.panelistNames; subPanel.plan = pannelToAdd.plan; subPanel.guideQuestion = pannelToAdd.guideQuestion; subPanel.formatDescription = pannelToAdd.formatDescription; subPanel.necessaryEquipment = pannelToAdd.necessaryEquipment; subPanel.deleted = false; context.panels.Add(subPanel); context.SaveChanges(); } //table workshop if (submissionToAdd.submissionTypeID == 5 && workshopToAdd != null) { workshop subWorkshop = new workshop(); subWorkshop.submissionID = submissionID; subWorkshop.duration = workshopToAdd.duration; subWorkshop.delivery = workshopToAdd.delivery; subWorkshop.plan = workshopToAdd.plan; subWorkshop.necessary_equipment = workshopToAdd.necessary_equipment; subWorkshop.deleted = false; context.workshops.Add(subWorkshop); context.SaveChanges(); } Submission addedSub = new Submission { submissionID = submissionID, submissionTypeName = getSubmissionTypeName(sub.submissionTypeID), submissionTypeID = sub.submissionTypeID, submissionTitle = sub.title, topiccategoryID = sub.topicID, status = sub.status, isEvaluated = false, isFinalSubmission = false }; return addedSub; } } catch (Exception ex) { Console.Write("SubmissionManager.addSubmission error " + ex); return null; } }
//Jaimeiris - add an evaluation to a submission. //If the evaluator asked for a final version of the submission, the system sends an email to the submitter to add a final version of the submission public bool addEvaluation(evaluationsubmitted evaluation, usersubmission usersubIn) { try { using (conferenceadminContext context = new conferenceadminContext()) { //Checking if its final or initial submission, here initialSubmissionID is actually the id of the submission evaluated, not necessarily the initial bool isFinalSubmission = context.usersubmission.Where(c => c.finalSubmissionID == usersubIn.initialSubmissionID).FirstOrDefault() == null ? false : (context.usersubmission.Where(d => d.initialSubmissionID == usersubIn.initialSubmissionID).FirstOrDefault() == null ? true : false); usersubmission userSub; //adding the evaluation evaluation.deleted = false; context.evaluationsubmitteds.Add(evaluation); context.SaveChanges(); context.evaluatiorsubmissions.Where(c => c.evaluationsubmissionID == evaluation.evaluatiorSubmissionID).FirstOrDefault().statusEvaluation = "Evaluated"; context.SaveChanges(); if (isFinalSubmission) { userSub = context.usersubmission.Where(c => c.finalSubmissionID == usersubIn.initialSubmissionID).FirstOrDefault(); } else { userSub = context.usersubmission.Where(c => c.initialSubmissionID == usersubIn.initialSubmissionID).FirstOrDefault(); } userSub.allowFinalVersion = usersubIn.allowFinalVersion; context.SaveChanges(); //sends an email notifying the user if the evaluator asked for a final version of the submission if (usersubIn.allowFinalVersion == true) { String email = null; email = (context.usersubmission.Where(c => c.initialSubmissionID == usersubIn.initialSubmissionID).FirstOrDefault() == null ? null : context.usersubmission.Where(c => c.initialSubmissionID == usersubIn.initialSubmissionID).FirstOrDefault().user.membership.email); if (email == null) email = context.usersubmission.Where(c => c.finalSubmissionID == usersubIn.initialSubmissionID).FirstOrDefault() == null ? null : context.usersubmission.Where(c => c.finalSubmissionID == usersubIn.initialSubmissionID).FirstOrDefault().user.membership.email; try { sendFinalVersionAllowedEmail(email, context.submissions.Where(c => c.submissionID == usersubIn.initialSubmissionID).FirstOrDefault().title); } catch (Exception ex) { Console.Write("SubmissionManager.addEvaluation error " + ex); return false; } } return true; } } catch (Exception ex) { Console.Write("SubmissionManager.addEvaluation error " + ex); return false; } }
//Jaimeiris - adds a final submission to a existing submission, this is when the submitter os not an administrator //Also removes the evaluator submission assignment for the relations for which the evaluations have not been added and sends an email to the evaluators informing them that they no longer have to evaluate said submission public Submission addFinalSubmission(usersubmission usersubTA, submission submissionToAdd, documentssubmitted submissionDocuments, panel pannelToAdd, workshop workshopToAdd) { try { String email = ""; using (conferenceadminContext context = new conferenceadminContext()) { submission sub = new submission(); //for all types of submissions //table submission sub.topicID = submissionToAdd.topicID; sub.submissionTypeID = submissionToAdd.submissionTypeID; sub.submissionAbstract = submissionToAdd.submissionAbstract; sub.title = submissionToAdd.title; sub.status = "Pending"; sub.creationDate = DateTime.Now; sub.deleted = false; sub.byAdmin = false; context.submissions.Add(sub); context.SaveChanges(); //table usersubmission long finalSubmissionID = sub.submissionID; usersubmission usersub = context.usersubmission.Where(c => c.initialSubmissionID == usersubTA.initialSubmissionID && c.deleted == false).FirstOrDefault(); usersub.finalSubmissionID = finalSubmissionID; context.SaveChanges(); //table documents submitted if (submissionToAdd.submissionTypeID != 4) { documentssubmitted subDocs = new documentssubmitted(); List<documentssubmitted> prevDocuments = context.documentssubmitteds.Where(d => d.submissionID == usersubTA.initialSubmissionID && d.deleted != true).Select(d => d).ToList(); foreach (var doc in prevDocuments) { int count = submissionToAdd.documentssubmitteds.Where(d => d.documentssubmittedID == doc.documentssubmittedID).Count(); if (count != 0) { var newDoc = new documentssubmitted(); newDoc.submissionID = finalSubmissionID; newDoc.documentName = doc.documentName; newDoc.document = doc.document; newDoc.deleted = false; context.documentssubmitteds.Add(newDoc); context.SaveChanges(); } } } //table pannels if (submissionToAdd.submissionTypeID == 3 && pannelToAdd != null) { panel subPanel = new panel(); subPanel.submissionID = finalSubmissionID; subPanel.panelistNames = pannelToAdd.panelistNames; subPanel.plan = pannelToAdd.plan; subPanel.guideQuestion = pannelToAdd.guideQuestion; subPanel.formatDescription = pannelToAdd.formatDescription; subPanel.necessaryEquipment = pannelToAdd.necessaryEquipment; subPanel.deleted = false; context.panels.Add(subPanel); context.SaveChanges(); } //table workshop if (submissionToAdd.submissionTypeID == 5 && workshopToAdd != null) { workshop subWorkshop = new workshop(); subWorkshop.submissionID = finalSubmissionID; subWorkshop.duration = workshopToAdd.duration; subWorkshop.delivery = workshopToAdd.delivery; subWorkshop.plan = workshopToAdd.plan; subWorkshop.necessary_equipment = workshopToAdd.necessary_equipment; subWorkshop.deleted = false; context.workshops.Add(subWorkshop); context.SaveChanges(); } //Delete connection between previous submissions and evaluators that have not evaluated them yet, //since these will not be taken into consideration for the avg score of the final submission List<evaluatiorsubmission> TBD = context.evaluatiorsubmissions.Where(c => c.submissionID == usersubTA.initialSubmissionID && c.statusEvaluation != "Evaluated" && c.deleted == false).ToList(); foreach (var assignment in TBD) { //quitando el assignment de submission y evaluator del intial submission a los q aun no han evaluado, se les envia un email al evaluador de que no esta asignado. assignment.deleted = true; try { email = assignment.evaluator.user.membership.email;//evaluator email String subject = "Caribbean Celebration of Women in Computing Assignment Deletion"; String messageBody = "Greetings, \n\n " + "The request to evaluate the submission with title " + assignment.submission.title + " has been removed. It is no longer required for you to evaluate said submission. To view all of your assigned submission please login to the system through the following link: \n\n" + "http://136.145.116.238/#/Login/Log" + "."; sendAssignmentEmail(email, subject, messageBody); //inform evaluator of deleted assignment via email } catch (Exception ex) { Console.Write("SubmissionManager.addEvaluation error " + ex); return null; } } context.SaveChanges(); Submission addedSub = new Submission { submissionID = finalSubmissionID, submissionTypeName = getSubmissionTypeName(sub.submissionTypeID), submissionTypeID = sub.submissionTypeID, submissionTitle = sub.title, topiccategoryID = sub.topicID, status = sub.status, isEvaluated = false, isFinalSubmission = true }; return addedSub; } } catch (Exception ex) { Console.Write("SubmissionManager.addSubmission error " + ex); return null; } }
//Jaimeiris - adds a final submission when the admins adds it public Submission postAdminFinalSubmission(usersubmission usersubTA, submission submissionToAdd, documentssubmitted submissionDocuments, panel pannelToAdd, workshop workshopToAdd) { try { using (conferenceadminContext context = new conferenceadminContext()) { submission sub = new submission(); //for all types of submissions //table submission sub.topicID = submissionToAdd.topicID; sub.submissionTypeID = submissionToAdd.submissionTypeID; sub.submissionAbstract = submissionToAdd.submissionAbstract; sub.title = submissionToAdd.title; sub.status = "Pending"; sub.creationDate = DateTime.Now; sub.deleted = false; sub.byAdmin = true; context.submissions.Add(sub); context.SaveChanges(); //table usersubmission long finalSubmissionID = sub.submissionID; usersubmission usersub = context.usersubmission.Where(c => c.initialSubmissionID == usersubTA.initialSubmissionID && c.deleted == false).FirstOrDefault(); usersub.finalSubmissionID = finalSubmissionID; context.SaveChanges(); //table documents submitted if (submissionToAdd.submissionTypeID != 4) { documentssubmitted subDocs = new documentssubmitted(); List<documentssubmitted> prevDocuments = context.documentssubmitteds.Where(d => d.submissionID == usersubTA.initialSubmissionID && d.deleted != true).Select(d => d).ToList(); foreach (var doc in prevDocuments) { int count = submissionToAdd.documentssubmitteds.Where(d => d.documentssubmittedID == doc.documentssubmittedID).Count(); if (count != 0) { var newDoc = new documentssubmitted(); newDoc.submissionID = finalSubmissionID; newDoc.documentName = doc.documentName; newDoc.document = doc.document; newDoc.deleted = false; context.documentssubmitteds.Add(newDoc); context.SaveChanges(); } } } //table pannels if (submissionToAdd.submissionTypeID == 3 && pannelToAdd != null) { panel subPanel = new panel(); subPanel.submissionID = finalSubmissionID; subPanel.panelistNames = pannelToAdd.panelistNames; subPanel.plan = pannelToAdd.plan; subPanel.guideQuestion = pannelToAdd.guideQuestion; subPanel.formatDescription = pannelToAdd.formatDescription; subPanel.necessaryEquipment = pannelToAdd.necessaryEquipment; subPanel.deleted = false; context.panels.Add(subPanel); context.SaveChanges(); } //table workshop if (submissionToAdd.submissionTypeID == 5 && workshopToAdd != null) { workshop subWorkshop = new workshop(); subWorkshop.submissionID = finalSubmissionID; subWorkshop.duration = workshopToAdd.duration; subWorkshop.delivery = workshopToAdd.delivery; subWorkshop.plan = workshopToAdd.plan; subWorkshop.necessary_equipment = workshopToAdd.necessary_equipment; subWorkshop.deleted = false; context.workshops.Add(subWorkshop); context.SaveChanges(); } //Delete connection between previous submissions and evaluators that have not evaluated them yet, //since these will not be taken into consideration for the avg score of the final submission List<evaluatiorsubmission> TBD = context.evaluatiorsubmissions.Where(c => c.submissionID == usersubTA.initialSubmissionID && c.statusEvaluation != "Evaluated" && c.deleted == false).ToList(); foreach (var assignment in TBD) { assignment.deleted = true; } context.SaveChanges(); Submission addedSub = new Submission { submissionID = finalSubmissionID, submissionTypeName = getSubmissionTypeName(sub.submissionTypeID), submissionTypeID = sub.submissionTypeID, submissionTitle = sub.title, topiccategoryID = sub.topicID, status = sub.status, isEvaluated = false, isFinalSubmission = true }; return addedSub; } } catch (Exception ex) { Console.Write("SubmissionManager.addSubmission error " + ex); return null; } }