public ResponseModel<string> CreateTemplate(List<CreateTemplateQuestionInfoModel> req,string username) { var response = new ResponseModel<string>(); var keyInfo = _db.CreateTemplateQuestionInfoes.FirstOrDefault(); var refKey = username; var digitKey = 0; if (keyInfo != null) { digitKey = _db.CreateTemplateQuestionInfoes.Max(x => x.Id) + 1; } else { digitKey = 1; } refKey += digitKey; var createTemplateQuestionsInfoInsert = new CreateTemplateQuestionInfo { buttonText = "NA", username = username, title = req[0].title, visible = "NA", type = "NA", creationTime = DateTime.Now.ToString(CultureInfo.InvariantCulture), referenceId = refKey, total = "NA", completed = "NA", verified = "NA" }; _db.CreateTemplateQuestionInfoes.Add(createTemplateQuestionsInfoInsert); try { _db.SaveChanges(); CreateSubTemplateByRefKey CreateSubTemplateByRefKey = new CreateSubTemplateByRefKey(); CreateSubTemplateByRefKey.CreateSubTemplateByRefKeyService(req, username, refKey); response.Status = 200; response.Message = "success-"+digitKey; response.Payload = refKey; } catch (DbEntityValidationException e) { DbContextException.LogDbContextException(e); response.Status = 500; response.Message = "Failed"; response.Payload = "Exception Occured"; } return response; }
public ResponseModel<string> CreateTemplateWithId(List<CreateTemplateQuestionInfoModel> req, string username,string id) { var response = new ResponseModel<string>(); var refKey = username+id; var createTemplateQuestionsInfoInsert = new CreateTemplateQuestionInfo { buttonText = "NA", username = username, title = req[0].title, visible = "NA", type = "NA", creationTime = DateTime.Now.ToString(CultureInfo.InvariantCulture), referenceId = refKey, total = "NA", completed = "NA", verified = "NA" }; _db.CreateTemplateQuestionInfoes.Add(createTemplateQuestionsInfoInsert); try { _db.SaveChanges(); CreateSubTemplateByRefKey CreateSubTemplateByRefKey = new CreateSubTemplateByRefKey(); CreateSubTemplateByRefKey.CreateSubTemplateByRefKeyService(req, username, refKey); response.Status = 200; response.Message = "Success"; response.Payload = "Successfully Created"; } catch (DbEntityValidationException e) { DbContextException.LogDbContextException(e); response.Status = 500; response.Message = "Failed"; response.Payload = "Exception Occured"; } return response; }
public ResponseModel<string> CreateTemplate(List<CreateTemplateQuestionInfoModel> req,string username,TemplateInfoModel TemplateInfo) { var response = new ResponseModel<string>(); var keyInfo = _db.CreateTemplateQuestionInfoes.FirstOrDefault(); var refKey = _db.Users.SingleOrDefault(x=>x.Username == username).guid; var digitKey = 0; Random rnd = new Random(); int randomValue = rnd.Next(1, 10000); if (keyInfo != null) { digitKey = _db.CreateTemplateQuestionInfoes.Max(x => x.Id) + 1; } else { digitKey = 1; } refKey += digitKey + randomValue; if (TemplateInfo.type == Constants.type_Ads && TemplateInfo.subType == Constants.subType_facebookLike) { var facebookFindPageId = TemplateInfo.pageId.Split('/'); var createTemplateFacebookLikeInsert = new CreateTemplateFacebookLike { username = username, title = req[0].title, type = TemplateInfo.type, subType = TemplateInfo.subType, creationTime = DateTime.Now.ToString(CultureInfo.InvariantCulture), referenceId = refKey, totalThreads = TemplateInfo.totalThreads, completed = Constants.NA, verified = Constants.NA, payPerUser = TemplateInfo.amountEachThread, DateTime = DateTime.Now, description = (req[3].textBoxQuestionsList[0].Question) == null ? Constants.NA : req[3].textBoxQuestionsList[0].Question, pageId = facebookFindPageId[facebookFindPageId.Length-1], pageUrl = TemplateInfo.pageUrl }; _db.CreateTemplateFacebookLikes.Add(createTemplateFacebookLikeInsert); try { _db.SaveChanges(); var signalRHub = new SignalRHub(); string totalProjects = new ProjectDAO().totalAvailableProjects(); string successRate = ""; string totalUsers = ""; string projectCategories = ""; var hubContext = GlobalHost.ConnectionManager.GetHubContext<SignalRHub>(); hubContext.Clients.All.updateBeforeLoginUserProjectDetails(totalProjects, successRate, totalUsers, projectCategories); response.Status = 200; response.Message = "success-" + digitKey; response.Payload = refKey; } catch (DbEntityValidationException e) { DbContextException.LogDbContextException(e); response.Status = 500; response.Message = "Failed"; response.Payload = "Exception Occured"; } } else { var createTemplateQuestionsInfoInsert = new CreateTemplateQuestionInfo { description = TemplateInfo.description != null ? TemplateInfo.description : Constants.NA, username = username, title = req[0].title, visible = Constants.NA, type = TemplateInfo.type, subType = TemplateInfo.subType, creationTime = DateTime.Now.ToString(CultureInfo.InvariantCulture), referenceId = refKey, totalThreads = TemplateInfo.totalThreads, completed = Constants.NA, verified = Constants.NA, payPerUser = TemplateInfo.amountEachThread }; _db.CreateTemplateQuestionInfoes.Add(createTemplateQuestionsInfoInsert); try { _db.SaveChanges(); CreateSubTemplateByRefKey CreateSubTemplateByRefKey = new CreateSubTemplateByRefKey(); CreateSubTemplateByRefKey.CreateSubTemplateByRefKeyService(req, username, refKey); var signalRHub = new SignalRHub(); string totalProjects = new ProjectDAO().totalAvailableProjects(); string successRate = ""; string totalUsers = ""; string projectCategories = ""; var hubContext = GlobalHost.ConnectionManager.GetHubContext<SignalRHub>(); hubContext.Clients.All.updateBeforeLoginUserProjectDetails(totalProjects, successRate, totalUsers, projectCategories); new SendNewTaskService().SendUserTaskNotificationToAllAsync(createTemplateQuestionsInfoInsert.title, "Total " + createTemplateQuestionsInfoInsert.totalThreads+" available",DateTime.Now); response.Status = 200; response.Message = "success-" + digitKey; response.Payload = refKey; } catch (DbEntityValidationException e) { DbContextException.LogDbContextException(e); response.Status = 500; response.Message = "Failed"; response.Payload = "Exception Occured"; } } return response; }
private ResponseModel<string> AllocateSingleAssignTypeThreadToUserByRefKey(CreateTemplateQuestionInfo clientJobInfo, string refKey, string username) { var response = new ResponseModel<string>(); var ifAlreadyAllocated = _db.UserJobMappings.SingleOrDefault(x => x.refKey == refKey && x.username == username); if (ifAlreadyAllocated != null) { response.Status = 403; response.Message = "already applied"; return response; } else if (_db.UserJobMappings.Where(x => x.refKey == refKey).Count() >= Convert.ToInt32((clientJobInfo.totalThreads))) { response.Status = 405; response.Message = "all threads are already allocated !!!"; return response; } int expectedDeliveryTimeInMinutes = 15; var UserJobMapping = new UserJobMapping(); UserJobMapping.refKey = refKey; UserJobMapping.username = username; UserJobMapping.startTime = DateTime.Now.ToString(); UserJobMapping.expectedDeliveryTime = DateTime.Now.AddMinutes(expectedDeliveryTimeInMinutes).ToString(); UserJobMapping.endTime = "NA"; UserJobMapping.status = Constants.status_assigned; _db.UserJobMappings.Add(UserJobMapping); try { _db.SaveChanges(); long JobId = clientJobInfo.Id; long JobCompleted = _db.UserJobMappings.Where(x => x.refKey == refKey && x.status == Constants.status_done).Count(); long JobAssigned = _db.UserJobMappings.Where(x => x.refKey == refKey && x.status == Constants.status_assigned).Count(); long JobReviewed = (JobCompleted > 1) ? (JobCompleted) / 2 : 0; // currently hard coded. //var SignalRClientHub = new SignalRClientHub(); //var hubContext = GlobalHost.ConnectionManager.GetHubContext<SignalRClientHub>(); //dynamic client = SignalRManager.getSignalRDetail(clientJobInfo.username); //if (client != null) //{ // client.updateClientProgressChart(Convert.ToString(JobId), clientJobInfo.totalThreads, Convert.ToString(JobCompleted), Convert.ToString(JobAssigned), Convert.ToString(JobReviewed)); // //client.updateClientProgressChart("8", "20", "10", "8", "5"); // //client.addMessage("add message signalR"); //} bool status = new UserUpdatesClientRealTimeData().UpdateClientRealTimeData(JobId, JobCompleted, JobAssigned, JobReviewed, clientJobInfo.totalThreads, clientJobInfo.username); response.Status = 200; response.Message = "success-"; response.Payload = refKey; } catch (DbEntityValidationException e) { DbContextException.LogDbContextException(e); response.Status = 500; response.Message = "Failed"; response.Payload = "Exception Occured"; } return response; }
private ResponseModel<string> AllocateMultipleTasksMultipleAssignTypeThreadToUserByRefKey(CreateTemplateQuestionInfo clientJobInfo, string refKey, string username) { var response = new ResponseModel<string>(); var ifAlreadyAllocated = _db.UserMultipleJobMappings.SingleOrDefault(x => x.refKey == refKey && x.username == username); if (ifAlreadyAllocated != null) { response.Status = 403; response.Message = "You have already applied for this job"; return response; } else if (_db.UserMultipleJobMappings.Where(x => x.refKey == refKey && x.isFirst == Constants.status_true).Count() >= Convert.ToInt32((clientJobInfo.totalThreads))) { response.Status = 405; response.Message = "all threads are already allocated !!!"; return response; } const int expectedDeliveryTimeInMinutes = 15; var availableJobLists = _db.CreateTemplateImgurImagesLists.Where(x => x.referenceKey == refKey && x.status == Constants.status_open).ToList(); if (availableJobLists != null) { if (availableJobLists.Count == 0) { response.Status = 406; response.Message = "All Threads of this job is already assigned."; return response; } lock (this) { int endCount = Constants.picPerUserImageModeration; if (availableJobLists.Count <= endCount) { endCount = availableJobLists.Count; } for (int i = 0; i < endCount; i++) { var transcriptionTask = availableJobLists[i]; var UserMultipleJobMapping = new UserMultipleJobMapping(); UserMultipleJobMapping.endTime = Constants.NA; UserMultipleJobMapping.expectedDelivery = DateTime.Now.AddMinutes(expectedDeliveryTimeInMinutes).ToString(); UserMultipleJobMapping.refKey = refKey; UserMultipleJobMapping.startTime = DateTime.Now.ToString(); UserMultipleJobMapping.status = Constants.status_assigned; if (clientJobInfo.type == Constants.type_moderation && clientJobInfo.subType == Constants.subType_moderatingPhotos) { UserMultipleJobMapping.subType = Constants.subType_moderatingPhotos; UserMultipleJobMapping.type = Constants.type_moderation; } else if (clientJobInfo.type == Constants.type_dataEntry && clientJobInfo.subType == Constants.subType_Transcription) { UserMultipleJobMapping.subType = Constants.subType_Transcription; UserMultipleJobMapping.type = Constants.type_dataEntry; } UserMultipleJobMapping.surveyResult = Constants.NA; UserMultipleJobMapping.username = username; UserMultipleJobMapping.imageKey = transcriptionTask.imgurLink; var updateImgurImageMapAfterAssigning = _db.CreateTemplateImgurImagesLists.SingleOrDefault(x => x.Id == transcriptionTask.Id); if (i == 0) UserMultipleJobMapping.isFirst = Constants.status_true; if (updateImgurImageMapAfterAssigning.alocatedCount == null) { updateImgurImageMapAfterAssigning.alocatedCount = 1; } else updateImgurImageMapAfterAssigning.alocatedCount += 1; if (updateImgurImageMapAfterAssigning.alocatedCount > (Constants.picPerUserImageModeration-1)) { updateImgurImageMapAfterAssigning.status = Constants.status_assigned; } _db.UserMultipleJobMappings.Add(UserMultipleJobMapping); } try { _db.SaveChanges(); long JobId = clientJobInfo.Id; long JobCompleted = _db.UserMultipleJobMappings.Where(x => x.refKey == refKey && x.status == Constants.status_done).Count(); long JobAssigned = _db.UserMultipleJobMappings.Where(x => x.refKey == refKey && x.status == Constants.status_assigned).Count(); long JobReviewed = (JobCompleted > 1) ? (JobCompleted) / 2 : 0; // currently hard coded. bool status = new UserUpdatesClientRealTimeData().UpdateClientRealTimeData(JobId, JobCompleted, JobAssigned, JobReviewed, clientJobInfo.totalThreads, clientJobInfo.username); response.Status = 200; response.Message = "success-"; response.Payload = refKey; } catch (DbEntityValidationException e) { DbContextException.LogDbContextException(e); response.Status = 500; response.Message = "Failed"; response.Payload = "Exception Occured"; } } } return response; }
private ResponseModel<string> AllocateMultipleAssignTypeThreadToUserByRefKey(CreateTemplateQuestionInfo clientJobInfo, string refKey, string username) { var response = new ResponseModel<string>(); var ifAlreadyAllocated = _db.UserMultipleJobMappings.SingleOrDefault(x => x.refKey == refKey && x.username == username); if (ifAlreadyAllocated != null) { response.Status = 403; response.Message = "You have already applied for this job"; return response; } else if (_db.UserMultipleJobMappings.Where(x => x.refKey == refKey && x.isFirst == Constants.status_true).Count() >= Convert.ToInt32((clientJobInfo.totalThreads))) { response.Status = 405; response.Message = "all threads are already allocated !!!"; return response; } const int expectedDeliveryTimeInMinutes = 15; var UserMultipleJobMapping = new UserMultipleJobMapping(); UserMultipleJobMapping.endTime = Constants.NA; UserMultipleJobMapping.expectedDelivery = DateTime.Now.AddMinutes(expectedDeliveryTimeInMinutes).ToString(); UserMultipleJobMapping.refKey = refKey; UserMultipleJobMapping.startTime = DateTime.Now.ToString(); UserMultipleJobMapping.status = Constants.status_assigned; if (clientJobInfo.type == Constants.type_moderation && clientJobInfo.subType == Constants.subType_moderatingPhotos) { UserMultipleJobMapping.subType = Constants.subType_moderatingPhotos; UserMultipleJobMapping.type = Constants.type_moderation; } else if (clientJobInfo.type == Constants.type_dataEntry && clientJobInfo.subType == Constants.subType_Transcription) { UserMultipleJobMapping.subType = Constants.subType_Transcription; UserMultipleJobMapping.type = Constants.type_dataEntry; } UserMultipleJobMapping.surveyResult = Constants.NA; UserMultipleJobMapping.username = username; var availableJobLists = _db.CreateTemplateImgurImagesLists.Where(x => x.referenceKey == refKey && x.status == Constants.status_open).ToList(); if (availableJobLists != null) { if (availableJobLists.Count == 0) { response.Status = 406; response.Message = "All Threads of this job is already assigned."; return response; } var transcriptionTask = availableJobLists.First(); try { //to be inclucded in lock lock (this) { UserMultipleJobMapping.imageKey = transcriptionTask.imgurLink; var updateImgurImageMapAfterAssigning = _db.CreateTemplateImgurImagesLists.SingleOrDefault(x => x.Id == transcriptionTask.Id); updateImgurImageMapAfterAssigning.status = Constants.status_assigned; _db.UserMultipleJobMappings.Add(UserMultipleJobMapping); _db.SaveChanges(); } //to be inclucded in lock long JobId = clientJobInfo.Id; long JobCompleted = _db.UserMultipleJobMappings.Where(x => x.refKey == refKey && x.status == Constants.status_done).Count(); long JobAssigned = _db.UserMultipleJobMappings.Where(x => x.refKey == refKey && x.status == Constants.status_assigned).Count(); long JobReviewed = (JobCompleted > 1) ? (JobCompleted) / 2 : 0; // currently hard coded. //var SignalRClientHub = new SignalRClientHub(); //var hubContext = GlobalHost.ConnectionManager.GetHubContext<SignalRClientHub>(); //dynamic client = SignalRManager.getSignalRDetail(clientJobInfo.username); //if (client != null) //{ // client.updateClientProgressChart(Convert.ToString(JobId), clientJobInfo.totalThreads, Convert.ToString(JobCompleted), Convert.ToString(JobAssigned), Convert.ToString(JobReviewed)); // //client.updateClientProgressChart("8", "20", "10", "8", "5"); // //client.addMessage("add message signalR"); //} bool status = new UserUpdatesClientRealTimeData().UpdateClientRealTimeData(JobId, JobCompleted, JobAssigned, JobReviewed, clientJobInfo.totalThreads, clientJobInfo.username); response.Status = 200; response.Message = "success-"; response.Payload = refKey; } catch (DbEntityValidationException e) { DbContextException.LogDbContextException(e); response.Status = 500; response.Message = "Failed"; response.Payload = "Exception Occured"; } } //UserMultipleJobMapping.imageKey = return response; }