public static void CreateLABAnswerMeasuresByLABMeasureAndLABStudy(LABMeasure labmeasure, LABStudy study) { List<LABAnswer> answerList = LABAnswerBL.GetAnswerListByIdLABStudy(study.idLABStudy); answerList.ForEach(answer => { LABAnswerMeasureBL.CreateLABAnswerMeasureByIdLABMeasureAndLABAnswer(labmeasure.idLABMeasure, answer); }); }
public static LABStudy GetLatestLABStudyByIdCustomerProspect(Guid idCustomerProspect, LABStudy.StatusEnum status) { using (UpsilabEntities context = new UpsilabEntities()) { string statusEnum = status.ToString(); return context.LABStudy.Where(study => study.idCustomer == idCustomerProspect && study.Status.Equals(statusEnum)) .OrderByDescending(study => study.DateUpdated) .FirstOrDefault(); var CompletedLABQuery = ComletedLabCompiledQuery.Invoke(context, new CompletedLabStudyByIdCustomerProspect { idCustomer = idCustomerProspect, clabcompletedStatus = LABStudy.StatusEnum.Completed.ToString(), clabsentToCoffreFort = LABStudy.StatusEnum.SentToCoffreFort.ToString() }); return CompletedLABQuery.AsEnumerable().FirstOrDefault(); } }
public static LABMeasure CreateLABMeasureForCompletedLABStudy(LABStudy study) { if (!LABStudyBL.IsLABStudyCompleted(study)) return null; LABMeasure returnValue = new LABMeasure(); returnValue.idCustomerProspect = study.idCustomer; returnValue.idLABStudy = study.idLABStudy; returnValue.DateCreated = DateTime.Now; returnValue.Status = LABMeasure.StatusEnum.Pending.ToString(); //craete the labmeasure using (UpsilabEntities context = new UpsilabEntities()) { context.LABMeasure.Attach(returnValue); context.ObjectStateManager.ChangeObjectState(returnValue, System.Data.EntityState.Added); context.SaveChanges(); } //get all answers and get them some lab answer measures LABAnswerMeasureBL.CreateLABAnswerMeasuresByLABMeasureAndLABStudy(returnValue, study); return returnValue; }
public static Boolean InsertAnswers(LABStudy labStudy, List<LABAnswer> answers) { try { using (UpsilabEntities context = new UpsilabEntities()) { answers.ForEach(answer => { LABAnswer newLabAnswer = new LABAnswer() { idLABAnswer = GuidHelper.GenerateGuid(), idLABStudy = labStudy.idLABStudy, idLABQuestion = answer.idLABQuestion, idResponse = answer.idResponse, idVigilance = answer.idVigilance, idRisk = answer.idRisk, ExtensionAnswer = answer.ExtensionAnswer, DateCreated = DateTime.Now }; context.LABAnswer.AddObject(newLabAnswer); }); context.SaveChanges(); } return true; } catch { return false; } }
public static Boolean SaveAndProcessAnswers(LABStudy study, List<LABAnswer> answers) { try { if (study == null) return true; if (answers == null) return true; if (answers.Count <= 0) return true; List<LABAnswer> answerList = answers.ToList(); //Get answer for first question LABAnswer firstQuestionAnswer = answerList.Where(a => a.idLABQuestion == 2).FirstOrDefault(); //Id 2 //process and save the answers using (UpsilabEntities context = new UpsilabEntities()) { answerList.ForEach(answer => { QuestionAssessmentBL.ProcessAnswerRiskAndVigilance(ref answer, firstQuestionAnswer); context.LABAnswer.Attach(answer); if (context.LABAnswer.Where(a => a.idLABAnswer.Equals(answer.idLABAnswer)).Count() > 0) { answer.DateUpdated = DateTime.Now; context.ObjectStateManager.ChangeObjectState(answer, System.Data.EntityState.Modified); } else { answer.DateCreated = DateTime.Now; context.ObjectStateManager.ChangeObjectState(answer, System.Data.EntityState.Added); } context.SaveChanges(); }); //context.SaveChanges(); } LABStudyBL.EvaluateLABStudy(study); return true; } catch { return false; } }
public static LABStudy CopyLatestLABStudy(LABStudy latestLABStudy) { LABStudy newLABStudy = new LABStudy() { idLABStudy = Business.Utility.GuidHelper.GenerateGuid(), idCustomer = latestLABStudy.idCustomer, idVigilance = latestLABStudy.idVigilance, idRisk = latestLABStudy.idRisk, //Status = LABStudy.StatusEnum.InProgress.ToString(), Status = LABStudy.StatusEnum.Completed.ToString(), //Completed since it's an update from a completed one DateCreated = DateTime.Now, DateUpdated = DateTime.Now, }; try { //Create new Labstudy LABStudyBL.InsertLABStudy(newLABStudy); //Copy options values : get latest and copy them to new LABStudy List<LABStudyOptionValue> labStudyOptionValues = Upsilab.Business.LAB.LABStudyOptionBL.GetOptionValuesByIdLabStudy(latestLABStudy.idLABStudy); LABStudyOptionBL.SaveLabStudyOptionValues(newLABStudy, labStudyOptionValues); //Copy the latest LAB Answers List<LABAnswer> latestLABAnswers = LABAnswerBL.GetLABAnswersByIdLABStudy(latestLABStudy.idLABStudy); LABAnswerBL.InsertAnswers(newLABStudy, latestLABAnswers); } catch { } return newLABStudy; }
public static LABStudy CreateEmptyLABStudy(Guid _idCustomer) { LABStudy LABStudy = new LABStudy() { idLABStudy = GuidHelper.GenerateGuid(), idCustomer = _idCustomer, DateCreated = DateTime.Now, DateUpdated = DateTime.Now, Status = Data.Model.LABStudy.StatusEnum.Created.ToString(), LABAnswer = new System.Data.Objects.DataClasses.EntityCollection<LABAnswer>() }; LABStudyBL.SaveLABStudy(LABStudy); return LABStudy; }
public static string BuildLABFileName(LABStudy pLabStudy, Upsilab.Data.Model.CustomerProspect pCustomer) { string type = (!pCustomer.IsCorporation.HasValue) ? "PP" : (pCustomer.IsCorporation.Value) ? "PM" : "PP"; string name = (type == "PP") ? pCustomer.User.UserName : pCustomer.CompanyName; string date = (pLabStudy.DateUpdated == null) ? pLabStudy.DateCreated.ToString("ddMMyyyy") : pLabStudy.DateUpdated.Value.ToString("ddMMyyyy"); string fileName = string.Format("LAB_{0}_{1}_{2}_{3}.pdf", type, FileManager.GetCorrectFileName(name), date, pLabStudy.idLABStudy); return fileName; }
public static LABStudy EvaluateLABStudy(LABStudy study) { if (LABStudyBL.IsLABStudyCompleted(study)) { study.Status = Data.Model.LABStudy.StatusEnum.Completed.ToString(); var answerList = LABAnswerBL.GetAnswerListByIdLABStudy(study.idLABStudy); LABAnswer riskValue = null; LABAnswer vigilanceValue = null; using (UpsilabEntities context = new UpsilabEntities()) { var query = from answer in answerList join risk in context.RiskLevel on answer.idRisk equals risk.idRiskLevel orderby risk.RiskOrder descending select answer; riskValue = query.FirstOrDefault(); query = from answer in answerList join vigilance in context.VigilanceLevel on answer.idVigilance equals vigilance.idVigilanceLevel orderby vigilance.VigilanceOrder descending select answer; vigilanceValue = query.FirstOrDefault(); } if (riskValue != null) study.idRisk = riskValue.idRisk; if (vigilanceValue != null) study.idVigilance = vigilanceValue.idVigilance; //TODO: LAB MEASURES } else { study.Status = Data.Model.LABStudy.StatusEnum.InProgress.ToString(); } study.DateUpdated = DateTime.Now; LABStudyBL.SaveLABStudy(study); return study; }
public static void InsertLABStudy(LABStudy study) { using (UpsilabEntities context = new UpsilabEntities()) { context.LABStudy.AddObject(study); context.SaveChanges(); } }
public static void SaveLABStudy(LABStudy study) { using (UpsilabEntities context = new UpsilabEntities()) { context.LABStudy.Attach(study); if (study.Status.Equals(Data.Model.LABStudy.StatusEnum.Created.ToString())) { study.Status = Data.Model.LABStudy.StatusEnum.InProgress.ToString(); context.ObjectStateManager.ChangeObjectState(study, System.Data.EntityState.Added); } else { context.ObjectStateManager.ChangeObjectState(study, System.Data.EntityState.Modified); } //update customer lab status Upsilab.Data.Model.CustomerProspect cust = context.CustomerProspect.Where(c => c.idCustomer == study.idCustomer).FirstOrDefault(); cust.CurrentLabStatus = study.Status; cust.idRisk = study.idRisk; cust.idVigilance = study.idVigilance; if (study.Status == Data.Model.LABStudy.StatusEnum.SentToCoffreFort.ToString()) { cust.DateShiftLABLast = DateTime.Now; cust.DateShiftLABNext = DateTime.Now.AddYears(1); if (cust.NbElectronicSafeDocument.HasValue) cust.NbElectronicSafeDocument = cust.NbElectronicSafeDocument.Value + 1; else cust.NbElectronicSafeDocument = 1; } if (study.Status == Data.Model.LABStudy.StatusEnum.Completed.ToString() || study.Status == Data.Model.LABStudy.StatusEnum.SentToCoffreFort.ToString()) { cust.NbVigilanceMeasure = (study.VigilanceMeasure != null) ? study.VigilanceMeasure.Count : 0; } context.ObjectStateManager.ChangeObjectState(cust, System.Data.EntityState.Modified); context.SaveChanges(); } }
public static Boolean IsLABStudyCompleted(LABStudy LABStudy) { if (LABStudy == null) return false; //get root questions by idCustomer isCorporation and construct question list var questionList = LABQuestionBL.GetLABQuestionsByIdCustomer(LABStudy.idCustomer); var answerList = LABAnswerBL.GetAnswerListByIdLABStudy(LABStudy.idLABStudy); // count the question vs answers if (answerList.Count >= questionList.Count) //should be == but some evol obliged us to delete some questions return true; return false; }
private static void ProcessUser(User user) { try { string statusInProgress = LABStudy.StatusEnum.InProgress.ToString(); string statusCompleted = LABStudy.StatusEnum.Completed.ToString(); string statusSentToCoffreFort = LABStudy.StatusEnum.SentToCoffreFort.ToString(); bool isSendTocoffreOk = false; //////// { // System.Console.WriteLine("\nTraitement de l'utilisateur : {0} {1}", user.UserName, user.UserFirstName); // int randomNumber = Rand(); _Log.Trace("Starting thread for {0} {1} from iteration {2} Thread count : {3} ", user.UserName, user.UserFirstName, _IterationId, _countThread); // Thread.Sleep(randomNumber); // _LstOfCommand.Enqueue(new GuidAction() { guid = user.idUser, action = "remove" }); // autoEvent.Set(); // _Log.Trace("Ending thread for {0} {1} from iteration {2}", user.UserName, user.UserFirstName, _IterationId); } // return; ////// //liste des CustomerProspectLABModel par utilisateur List<CustomerProspectLABModel> lstCustomerLABModels = new List<CustomerProspectLABModel>(); lstCustomerLABModels = LABStudyBL.GetCustomerLABModelInProgress(user.idUser); //boucle sur liste customer LABModel labModelNow = null; LABStudy labStudyNow = null; List<Guid> lstFailingGuid = new List<Guid>(); foreach (CustomerProspectLABModel customerLabModel in lstCustomerLABModels) { try { using (UpsilabEntities db = new UpsilabEntities()) { //LABModel d'un utilisateur en cour labModelNow = new LABModel(); labModelNow = db.LABModel.Where(l => l.idUser == user.idUser && l.idLABModel == customerLabModel.idLABModel).FirstOrDefault(); //copy LABModel vers LABStudy labStudyNow = new LABStudy() { idLABStudy = GuidHelper.GenerateGuid(), idCustomer = customerLabModel.idCustomerProspect, DateCreated = DateTime.Now, DateUpdated = DateTime.Now, Status = statusInProgress, idRisk = labModelNow.idRisk, idVigilance = labModelNow.idVigilance }; db.LABStudy.AddObject(labStudyNow); _Log.Trace("\nApplication du modele LAB : {0} au client : {1} {2}", labModelNow.Name, customerLabModel.CustomerProspect.Name, customerLabModel.CustomerProspect.User.UserFirstName); //liste des question/reponse (LABAnswerModel) List<LABAnswerModel> lstanswermodel = new List<LABAnswerModel>(); lstanswermodel = db.LABAnswerModel.Where(lam => lam.idLABModel == labModelNow.idLABModel).ToList(); //copy LABAnswerModel vers LABAnswer foreach (LABAnswerModel lam in lstanswermodel) { LABAnswer LABAnswerNow = new LABAnswer() { idLABAnswer = GuidHelper.GenerateGuid(), idLABStudy = labStudyNow.idLABStudy, idLABQuestion = lam.idLABQuestion, idResponse = lam.idResponse, idRisk = lam.idRisk, idVigilance = lam.idVigilance, DateCreated = DateTime.Now, DateUpdated = DateTime.Now }; db.LABAnswer.AddObject(LABAnswerNow); } labStudyNow.idElectronicSafeDocument = null; labStudyNow.Status = statusCompleted; //envoie la transaction db.SaveChanges(); } if (labStudyNow != null) { _Log.Trace("Début envoi de la LAB au coffre-fort"); //ElectronicSafeDocument Guid idElectronicSafeDocument = Guid.Empty; idElectronicSafeDocument = LABStudyBL.SendToCoffreFort(labStudyNow.idCustomer, labStudyNow.idLABStudy); if (idElectronicSafeDocument != Guid.Empty) { isSendTocoffreOk = true; using (UpsilabEntities db = new UpsilabEntities()) { //update CustomerProspectLABModel customerLAbModeltoupdate = db.CustomerProspectLABModel.Where(c => c.idCustomerProspectLABModel == customerLabModel.idCustomerProspectLABModel).FirstOrDefault(); customerLAbModeltoupdate.Status = statusCompleted; customerLAbModeltoupdate.DateUpdated = DateTime.Now; //update customerprospect CustomerProspect customerToUpdate = db.CustomerProspect.Where(c => c.idCustomer == customerLabModel.idCustomerProspect).FirstOrDefault(); customerToUpdate.CurrentLabStatus = statusSentToCoffreFort; //envoie la transaction db.SaveChanges(); } _Log.Trace("Envoi au coffre-fort OK"); } else { lstFailingGuid.Add(customerLabModel.CustomerProspect.IdUser); _Log.Trace("Erreur envoi au coffre-fort"); } } } catch (Exception exc) { lstFailingGuid.Add(customerLabModel.CustomerProspect.IdUser); _Log.Trace("Erreur pour le customer : {0}", customerLabModel.CustomerProspect.IdUser.ToString()); } if (_CancelToken.IsCancellationRequested) break; } //ajout nouveau message pour un utilisateur quand l'affectation LAB est fini if (lstFailingGuid.Count == 0) { using (UpsilabEntities db = new UpsilabEntities()) { Message msg = new Message() { idUser = user.idUser, NameKey = LABStudyBL.MessageNamekey, Read = false, DateCreated = DateTime.Now, DateUpdated = DateTime.Now, idLABModel = labModelNow.idLABModel, From = LABStudyBL.FromLABModel }; db.Message.AddObject(msg); //envoie la transaction db.SaveChanges(); } _Log.Trace("\n Aucun incident pour l'utilisateur"); } else { using (UpsilabEntities db = new UpsilabEntities()) { Message msg = new Message() { idUser = user.idUser, NameKey = LABStudyBL.MessageNamekeyKO, Read = false, DateCreated = DateTime.Now, DateUpdated = DateTime.Now, idLABModel = labModelNow.idLABModel, From = LABStudyBL.FromLABModel, AdditionnalContent = String.Join(";", lstFailingGuid.ToArray()) }; db.Message.AddObject(msg); //envoie la transaction db.SaveChanges(); } _Log.Trace("\n Erreur survenue pour l'utilisateur"); } } catch (Exception ex) { _Log.Trace("Exception : {0}", ex.Message); Log.AppendException(ex); } finally { _LstOfCommand.Enqueue(new GuidAction() { guid = user.idUser, action = "remove" }); autoEvent.Set(); _Log.Trace("Ending thread for {0} {1} from iteration {2}", user.UserName, user.UserFirstName, _IterationId); } // RemoveItemToLstOfProcessingUser(user); }