public void AddRange(CoreElement core) { if (core.Count == 0) { return; } var count = _Count; var requiredCount = count + core.Count; var len = _Items.Length; if (len < requiredCount) { var newLen = len == 0 ? InitialCapacity : len * GrowRate; if (newLen < requiredCount) { newLen = requiredCount; } Array.Resize(ref _Items, newLen); } Array.Copy(core.Items, 0, _Items, count, core.Count); _Count += core.Count; }
public BaseCore(int tp, int maxhp, int minhp, CoreElement ce) { if (minhp > maxhp || maxhp > tp) { throw new Exception("核心初始化数据异常"); } TotalPoint = tp; MaxHp = maxhp; MinHp = minhp; CurrentHpPoint = (MaxHp + MinHp) / 2; Element = ce; BaseCore.CoreList.Add(this); }
public async Task Core_Template_TemplateValidation_ReturnsErrorLst() { // Arrange CoreElement CElement = new CoreElement(); //CElement.ElementList = new List<Element>(); DateTime startDt = DateTime.Now; DateTime endDt = DateTime.Now; MainElement main = new MainElement(1, "label1", 4, "folderWithList", 1, startDt, endDt, "Swahili", false, true, false, true, "type1", "MessageTitle", "MessageBody", false, CElement.ElementList, ""); // Act var match = await sut.TemplateValidation(main); // Assert Assert.NotNull(match); Assert.AreEqual(match.Count(), 0); }
public async Task Core_Template_TemplateCreate_CreatesTemplate() { // Arrange CoreElement CElement = new CoreElement(); //CElement.ElementList = new List<Element>(); DateTime startDt = DateTime.Now; DateTime endDt = DateTime.Now; MainElement main = new MainElement(1, "label1", 0, "folderWithList", 1, startDt, endDt, "Swahili", false, true, true, true, "type1", "MessageTitle", "MessageBody", false, CElement.ElementList, ""); // Act var match = await sut.TemplateCreate(main); // Assert Assert.NotNull(match); Assert.AreEqual(match, main.Id); }
public async Task Core_Template_TemplateUploadData_ReturnsmainElement() { // Arrange CoreElement CElement = new CoreElement(); //CElement.ElementList = new List<Element>(); DateTime startDt = DateTime.Now; DateTime endDt = DateTime.Now; MainElement main = new MainElement(1, "label1", 0, "folderWithList", 1, startDt, endDt, "Swahili", false, true, true, true, "type1", "MessageTitle", "MessageBody", false, CElement.ElementList, ""); // Act var match = await sut.TemplateUploadData(main); // Assert #region Assert Assert.NotNull(match); Assert.AreEqual(match.CaseType, main.CaseType); Assert.AreEqual(match.CheckListFolderName, main.CheckListFolderName); Assert.AreEqual(match.DisplayOrder, main.DisplayOrder); Assert.AreEqual(match.DownloadEntities, main.DownloadEntities); Assert.AreEqual(match.ElementList, main.ElementList); Assert.AreEqual(match.EndDate, main.EndDate); Assert.AreEqual(match.EndDateString, main.EndDateString); Assert.AreEqual(match.FastNavigation, main.FastNavigation); Assert.AreEqual(match.Id, main.Id); Assert.AreEqual(match.Label, main.Label); Assert.AreEqual(match.Language, main.Language); Assert.AreEqual(match.ManualSync, main.ManualSync); Assert.AreEqual(match.MicrotingUId, main.MicrotingUId); Assert.AreEqual(match.MultiApproval, main.MultiApproval); Assert.AreEqual(match.PushMessageBody, main.PushMessageBody); Assert.AreEqual(match.PushMessageTitle, main.PushMessageTitle); Assert.AreEqual(match.Repeated, main.Repeated); Assert.AreEqual(match.StartDate, main.StartDate); Assert.AreEqual(match.StartDateString, main.StartDateString); Assert.AreEqual(match, main); #endregion }
public string PackCoreElement(CoreElement coreElement) { JObject coreElementObj = new JObject(); //string json = JsonConvert.SerializeObject(mainElement); if (coreElement is MainElement) { coreElementObj = JObject.FromObject(coreElement as MainElement); } else if (coreElement is ReplyElement) { coreElementObj = JObject.FromObject(coreElement as ReplyElement); } else { coreElementObj = JObject.FromObject(coreElement); } JArray a = coreElementObj["ElementList"] as JArray; for (int i = 0; i < coreElement.ElementList.Count; i++) { if (coreElement.ElementList[i] is DataElement) { a[i]["Type"] = "DataElement"; AddTypes(a[i]["DataItemList"] as JArray, (coreElement.ElementList[i] as DataElement).DataItemList); AddTypes(a[i]["DataItemGroupList"] as JArray, (coreElement.ElementList[i] as DataElement).DataItemGroupList); } else if (coreElement.ElementList[i] is CheckListValue) { a[i]["Type"] = "CheckListValue"; AddTypes(a[i]["DataItemList"] as JArray, (coreElement.ElementList[i] as CheckListValue).DataItemList); AddTypes(a[i]["DataItemGroupList"] as JArray, (coreElement.ElementList[i] as CheckListValue).DataItemGroupList); } } return(coreElementObj.ToString()); }
[Test]//needs http mock done public async Task Core_Case_CaseCreate_CreatesCase() { // Arrange #region Template1 DateTime c1_Ca = DateTime.Now; DateTime c1_Ua = DateTime.Now; check_lists cl1 = await testHelpers.CreateTemplate(c1_Ca, c1_Ua, "A", "D", "CheckList", "Template1FolderName", 1, 1); #endregion #region SubTemplate1 check_lists cl2 = await testHelpers.CreateSubTemplate("A.1", "D.1", "CheckList", 1, 1, cl1); #endregion #region Fields #region field1 fields f1 = await testHelpers.CreateField(1, "barcode", cl2, "e2f4fb", "custom", null, "", "Comment field description", 5, 1, dbContext.field_types.Where(x => x.FieldType == "picture").First(), 0, 0, 1, 0, "Comment field", 1, 55, "55", "0", 0, 0, null, 1, 0, 0, 0, "", 49); #endregion #region field2 fields f2 = await testHelpers.CreateField(1, "barcode", cl2, "f5eafa", "custom", null, "", "showPDf Description", 45, 1, dbContext.field_types.Where(x => x.FieldType == "comment").First(), 0, 1, 0, 0, "ShowPdf", 0, 5, "5", "0", 0, 0, null, 0, 0, 0, 0, "", 9); #endregion #region field3 fields f3 = await testHelpers.CreateField(0, "barcode", cl2, "f0f8db", "custom", 3, "", "Number Field Description", 83, 0, dbContext.field_types.Where(x => x.FieldType == "picture").First(), 0, 0, 1, 0, "Numberfield", 1, 8, "4865", "0", 0, 1, null, 1, 0, 0, 0, "", 1); #endregion #region field4 fields f4 = await testHelpers.CreateField(1, "barcode", cl2, "fff6df", "custom", null, "", "date Description", 84, 0, dbContext.field_types.Where(x => x.FieldType == "picture").First(), 0, 0, 1, 0, "Date", 1, 666, "41153", "0", 0, 1, null, 0, 1, 0, 0, "", 1); #endregion #region field5 fields f5 = await testHelpers.CreateField(0, "barcode", cl2, "ffe4e4", "custom", null, "", "picture Description", 85, 0, dbContext.field_types.Where(x => x.FieldType == "comment").First(), 1, 0, 1, 0, "Picture", 1, 69, "69", "1", 0, 1, null, 0, 1, 0, 0, "", 1); #endregion #endregion #region Worker workers worker = await testHelpers.CreateWorker("*****@*****.**", "Arne", "Jensen", 21); #endregion #region site sites site = await testHelpers.CreateSite("SiteName", 88); #endregion CoreElement CElement = new CoreElement(); //CElement.ElementList = new List<Element>(); MainElement main = new MainElement(1, "label1", 1, "FolderWithList", 0, DateTime.Now, DateTime.Now.AddDays(2), "Swahili", false, false, false, false, "Type1", "Push", "TextForBody", false, CElement.ElementList, "Blue"); // Act var match = await sut.CaseCreate(main, "", (int)site.MicrotingUid, null); // Assert Assert.NotNull(match); }
private async Task <ReportModel> GetReportData( GenerateReportModel model, Item item, IEnumerable <ItemCase> itemCases, CoreElement template) { var core = await _coreHelper.GetCore(); await using MicrotingDbContext microtingDbContext = core.DbContextHelper.GetDbContext(); var finalModel = new ReportModel { Name = item.Name, Description = item.Description, DateFrom = model.DateFrom, DateTo = model.DateTo }; // Go through template elements and get fields and options labels foreach (var element in template.ElementList) { if (!(element is DataElement dataElement)) { continue; } var dataItems = dataElement.DataItemList; foreach (var dataItem in dataItems) { var reportFieldModel = new ReportFormFieldModel() { DataItemId = dataItem.Id, Label = dataItem.Label }; switch (dataItem) { case MultiSelect multiSelect: // Add label for each option reportFieldModel.Options = multiSelect.KeyValuePairList.Select(x => new ReportFormFieldOptionModel() { Key = x.Key, Label = x.Value }).ToList(); break; case SingleSelect singleSelect: case CheckBox checkBox: case Number number: case Text text: // No option label needed for these types reportFieldModel.Options.Add(new ReportFormFieldOptionModel() { Key = string.Empty, Label = string.Empty }); break; default: continue; } finalModel.FormFields.Add(reportFieldModel); } } // Get all answered cases TimeZoneInfo timeZoneInfo; try { timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Europe/Copenhagen"); } catch { timeZoneInfo = TimeZoneInfo.Local; } var casesList = core.CaseReadAll(template.Id, null, null, timeZoneInfo).Result .Where(c => itemCases.Select(ic => ic.MicrotingSdkCaseId).Contains(c.Id)) .ToList(); // Go through all itemCases foreach (var ic in itemCases) { finalModel.Ids.Add($"{ic.Id} / {ic.MicrotingSdkCaseId}"); finalModel.Dates.Add(ic.CreatedAt); var @case = casesList.FirstOrDefault(c => c.Id == ic.MicrotingSdkCaseId); // Fill with empty values, if this itemCase was not replied if (@case == null) { foreach (var fieldModel in finalModel.FormFields) { foreach (var optionModel in fieldModel.Options) { optionModel.Values.Add(""); } } finalModel.DatesDoneAt.Add(null); finalModel.DoneBy.Add(null); continue; } else { finalModel.DoneBy.Add(@case.WorkerName); finalModel.DatesDoneAt.Add(@case.DoneAt); } // Get the reply and work with its ElementList var locale = await _userService.GetCurrentUserLocale(); Language language = core.DbContextHelper.GetDbContext().Languages.Single(x => x.LanguageCode.ToLower() == locale.ToLower()); foreach (var element in core.CaseRead((int)@case.MicrotingUId, (int)@case.CheckUIid, language).Result.ElementList) { if (!(element is CheckListValue checkListValue)) { continue; } // Get the values for each field from the reply foreach (var fieldModel in finalModel.FormFields) { if (!(checkListValue.DataItemList.First(x => x.Id == fieldModel.DataItemId) is Field field)) { continue; } // Fill values for field options foreach (var optionModel in fieldModel.Options) { if (optionModel.Key.IsNullOrEmpty()) { optionModel.Values.Add(field.FieldValues[0].ValueReadable); } else { var selectedKeys = field.FieldValues[0].Value.Split('|'); optionModel.Values.Add( selectedKeys.Contains(optionModel.Key) ? _itemsPlanningLocalizationService.GetString("Yes") : "" ); } } } } } return(finalModel); }
public void EventCaseCompleted(object sender, EventArgs args) { lock (_lockLogic) { try { Case_Dto trigger = (Case_Dto)sender; int siteId = trigger.SiteUId; string caseType = trigger.CaseType; string caseUid = trigger.CaseUId; string mUId = trigger.MicrotingUId; string checkUId = trigger.CheckUId; //-------------------- Random rdn = new Random(); #region create offering if (caseType == "Step one") { CoreElement reply = core.CaseRead(mUId, checkUId); CheckListValue replyDataE = (CheckListValue)reply.ElementList[0]; FieldValue answer = (FieldValue)replyDataE.DataItemList[0]; MainElement mainElement = core.TemplateRead(step2tId); DataElement dataE = (DataElement)mainElement.ElementList[0]; None none = (None)dataE.DataItemList[0]; none.Label = "Container with stat:" + answer.Value + " is ready for collection"; none.Description = new CDataValue(); none.Description.InderValue = DateTime.Now.ToShortDateString() + "/" + DateTime.Now.ToLongTimeString(); foreach (int siteIdTemp in siteIdsSA) { core.CaseCreate(mainElement, "", siteIdTemp); } } #endregion #region create replies (winner/others) if (caseType == "Step two") { #region is the first? bool isFirst = false; int found = 0; try { List <Case_Dto> lst = core.CaseLookupCaseUId(caseUid); foreach (var item in lst) { if (item.Stat == "Completed") { found++; } } if (found == 1) { isFirst = true; } } catch (Exception ex) { throw new Exception("isFirst failed", ex); } #endregion if (isFirst) { #region send win eForm CoreElement reply = core.CaseRead(mUId, checkUId); DataElement replyDataE = (DataElement)reply.ElementList[0]; FieldValue answer = (FieldValue)replyDataE.DataItemList[0]; MainElement mainElement = core.TemplateRead(step3WtId); DataElement dataE = (DataElement)mainElement.ElementList[0]; Date date = (Date)dataE.DataItemList[0]; dataE.Description = new CDataValue(); dataE.Description.InderValue = DateTime.Now.ToShortDateString() + "/" + DateTime.Now.ToLongTimeString(); date.MinValue = DateTime.Now; date.MaxValue = DateTime.Now.AddDays(1); date.DefaultValue = DateTime.Now.AddMinutes(1).ToString("u"); core.CaseCreate(mainElement, "", siteId); #endregion } else { #region send loss eForm CoreElement reply = core.CaseRead(mUId, checkUId); DataElement replyDataE = (DataElement)reply.ElementList[0]; FieldValue answer = (FieldValue)replyDataE.DataItemList[0]; MainElement mainElement = core.TemplateRead(step3LtId); DataElement dataE = (DataElement)mainElement.ElementList[0]; None none = (None)dataE.DataItemList[0]; none.Description = new CDataValue(); none.Description.InderValue = "Collection missed at:" + DateTime.Now.ToShortDateString() + "/" + DateTime.Now.ToLongTimeString(); core.CaseCreate(mainElement, "", siteId); #endregion } } #endregion #region final step if (caseType == "Step three") { CoreElement reply = core.CaseRead(mUId, checkUId); DataElement replyDataE = (DataElement)reply.ElementList[0]; FieldValue answer = (FieldValue)replyDataE.DataItemList[0]; #region is the winner? bool isWinner = false; try { if (replyDataE.Label == "Won - Container collection") { isWinner = true; } } catch (Exception ex) { throw new Exception("isWinner failed", ex); } #endregion if (isWinner) { MainElement mainElement = core.TemplateRead(step4tId); DataElement dataE = (DataElement)mainElement.ElementList[0]; None none = (None)dataE.DataItemList[0]; none.Label = "Container collect at:" + answer.Value; foreach (int siteIdTemp in siteIdsDW) { core.CaseCreate(mainElement, "", siteIdTemp); } } } #endregion } catch (Exception ex) { EventMessage(ex.ToString(), EventArgs.Empty); } } }