/// <summary> /// Used to get the check ins for a helpdesk /// </summary> /// <param name="helpdeskId">The id of the helpdesk</param> /// <returns>Response with checkins if found and the success result</returns> public GetCheckInsResponse GetCheckInsByHelpdeskId(int helpdeskId) { var response = new GetCheckInsResponse(); try { var dataLayer = new CheckInDataLayer(); response.CheckIns = dataLayer.GetCheckinsByHelpdeskId(helpdeskId); response.Status = HttpStatusCode.OK; } catch (NotFoundException ex) { s_logger.Trace(ex, "No check ins found"); response.Status = HttpStatusCode.NotFound; response.StatusMessages.Add(new StatusMessage(HttpStatusCode.NotFound, "No check ins found")); } catch (Exception ex) { s_logger.Error(ex, "Unable to get check ins"); response.Status = HttpStatusCode.InternalServerError; response.StatusMessages.Add(new StatusMessage(HttpStatusCode.InternalServerError, "Unable to get check ins")); } return(response); }
/// <summary> /// This method is used to check a check in item out of the helpdesk system /// </summary> /// <param name="id">Specified CheckInID</param> /// <returns>A response indicating success or failure</returns> public CheckOutResponse CheckOut(CheckOutRequest request, int id) { CheckOutResponse response = new CheckOutResponse(); try { CheckInDataLayer dataLayer = new CheckInDataLayer(); bool result = dataLayer.CheckOut(request, id); if (result == false) { throw new NotFoundException("Unable to find check in item!"); } QueueDataLayer queueDataLayer = new QueueDataLayer(); var queueItems = queueDataLayer.GetQueueItemsByCheckIn(id); UpdateQueueItemStatusRequest removeRequest = new UpdateQueueItemStatusRequest() { TimeRemoved = DateTime.Now }; foreach (var item in queueItems) { queueDataLayer.UpdateQueueItemStatus(item.ItemId, removeRequest); } response.Result = result; response.Status = HttpStatusCode.OK; } catch (NotFoundException ex) { s_logger.Warn(ex, "Unable to find check out item"); response.Status = HttpStatusCode.NotFound; response.StatusMessages.Add(new StatusMessage(HttpStatusCode.NotFound, "Unable to find check out item")); } catch (Exception ex) { s_logger.Error(ex, "Unable to check out"); response.Status = HttpStatusCode.InternalServerError; response.StatusMessages.Add(new StatusMessage(HttpStatusCode.InternalServerError, "Unable to check out")); } return(response); }
/// <summary> /// Used to get a Zip file of all of the database tables as CSVs /// </summary> public DatabaseExportResponse ExportDatabase() { var response = new DatabaseExportResponse(); try { FileProccessing proccessing = new FileProccessing(); DateTime now = DateTime.Now; string exportName = $"databaseexport_{now.ToString("yyyyddMM_HHmmss")}"; string fullZipPath = proccessing.CreateZip(_appSettings.DatabaseBackupDestination, exportName); if (string.IsNullOrEmpty(fullZipPath)) { s_logger.Error("Unable to create empty zip"); response.Status = HttpStatusCode.InternalServerError; return(response); } else { var helpdeskDataLayer = new HelpdeskDataLayer(); var unitDataLayer = new UnitsDataLayer(); var usersDataLayer = new UsersDataLayer(); var topicsDataLayer = new TopicsDataLayer(); var studentDataLayer = new StudentDatalayer(); var queueDataLayer = new QueueDataLayer(); var checkInDataLayer = new CheckInDataLayer(); DataTable helpdesks = helpdeskDataLayer.GetHelpdesksAsDataTable(); proccessing.SaveToZIPAsCSV(fullZipPath, "helpdesks", helpdesks); DataTable timespans = helpdeskDataLayer.GetTimeSpansAsDataTable(); proccessing.SaveToZIPAsCSV(fullZipPath, "timespans", timespans); DataTable helpdeskUnits = helpdeskDataLayer.GetHelpdeskUnitsAsDataTable(); proccessing.SaveToZIPAsCSV(fullZipPath, "helpdeskunits", helpdeskUnits); DataTable users = usersDataLayer.GetUsersAsDataTable(); proccessing.SaveToZIPAsCSV(fullZipPath, "users", users); DataTable units = unitDataLayer.GetUnitsAsDataTable(); proccessing.SaveToZIPAsCSV(fullZipPath, "units", units); DataTable topics = topicsDataLayer.GetTopicsAsDataTable(); proccessing.SaveToZIPAsCSV(fullZipPath, "topics", topics); DataTable students = studentDataLayer.GetStudentsAsDataTable(); proccessing.SaveToZIPAsCSV(fullZipPath, "students", students); DataTable queuesItems = queueDataLayer.GetQueueItemsAsDataTable(); proccessing.SaveToZIPAsCSV(fullZipPath, "queueItems", queuesItems); DataTable checkIns = checkInDataLayer.GetCheckInsAsDataTable(); proccessing.SaveToZIPAsCSV(fullZipPath, "checkInHistory", checkIns); DataTable checkInQueueItems = checkInDataLayer.GetCheckInQueueItemsAsDataTable(); proccessing.SaveToZIPAsCSV(fullZipPath, "checkinqueueitem", checkInQueueItems); response.Path = fullZipPath; response.Status = HttpStatusCode.OK; } } catch (Exception ex) { s_logger.Error(ex, "Unable to generate database export"); response.Status = HttpStatusCode.InternalServerError; } return(response); }
/// <summary> /// This method is used to check in into the helpdesk system /// </summary> /// <param name="request">The request containing the specified UnitID</param> /// <returns>A response indicating success or failure</returns> public CheckInResponse CheckIn(CheckInRequest request) { CheckInResponse response = new CheckInResponse(); try { response = (CheckInResponse)request.CheckValidation(response); if (response.Status == HttpStatusCode.BadRequest) { return(response); } StudentFacade studentFacade = new StudentFacade(); if (!request.StudentID.HasValue) { if (studentFacade.GetStudentByNickname(request.Nickname).Status != HttpStatusCode.NotFound) { response.Status = HttpStatusCode.BadRequest; return(response); } AddStudentRequest addStudentRequest = new AddStudentRequest() { SID = request.SID, Nickname = request.Nickname }; AddStudentResponse addStudentResponse = studentFacade.AddStudentNickname(addStudentRequest); request.StudentID = addStudentResponse.StudentID; } using (helpdesksystemContext context = new helpdesksystemContext()) { if (context.Nicknames.FirstOrDefault(n => n.StudentId == request.StudentID) == null) { throw new NotFoundException("No student found for id " + request.StudentID); } } CheckInDataLayer dataLayer = new CheckInDataLayer(); int checkInID = dataLayer.CheckIn(request); response.StudentID = request.StudentID.Value; response.CheckInID = checkInID; response.Status = HttpStatusCode.OK; } catch (NotFoundException ex) { s_logger.Warn(ex, "No student found for id " + request.SID); response.Status = HttpStatusCode.NotFound; response.StatusMessages.Add(new StatusMessage(HttpStatusCode.NotFound, "No student found for id " + request.SID)); } catch (Exception ex) { s_logger.Error(ex, "Unable to check in"); response.Status = HttpStatusCode.InternalServerError; response.StatusMessages.Add(new StatusMessage(HttpStatusCode.InternalServerError, "Unable to check in")); } return(response); }