public ActionResult Create(int employerId) { var utcNow = DateTime.UtcNow; var workOrder = new WorkOrder { EmployerID = employerId, dateTimeofWork = utcNow, transportMethodID = _defaults.getDefaultID(LCategory.transportmethod), typeOfWorkID = _defaults.getDefaultID(LCategory.worktype), statusID = _defaults.getDefaultID(LCategory.orderstatus), timeFlexible = true, workerRequestsDDD = new List <WorkerRequest>() }; ViewBag.workerRequests = workOrder.workerRequestsDDD?.Select(a => new SelectListItem { Value = a.WorkerID.ToString(), Text = a.workerRequested.dwccardnum.ToString() + ' ' + a.workerRequested.Person.firstname1 + ' ' + a.workerRequested.Person.lastname1 } ); MapperHelpers.ClientTimeZoneInfo = _clientTimeZoneInfo; MapperHelpers.Defaults = _defaults; var wo = _map.Map <WorkOrder, ViewModel.WorkOrder>(workOrder); return(PartialView("Create", wo)); }
public async Task <ActionResult> Create(WorkOrder wo, string userName, [FromForm] List <int> workerRequestsAAA) { ModelState.ThrowIfInvalid(); var modelUpdated = await _adaptor.TryUpdateModelAsync(this, wo); if (!modelUpdated) { return(StatusCode(500)); } List <Domain.WorkerRequest> wRequests = new List <Domain.WorkerRequest>(); foreach (var workerID in workerRequestsAAA) { wRequests.Add(new WorkerRequest { WorkerID = workerID }); } //wo.workerRequests = wRequests; wo.dateTimeofWork = TimeZoneInfo.ConvertTimeToUtc(wo.dateTimeofWork, _clientTimeZoneInfo); var workOrder = _woServ.Create(wo, wRequests, userName); MapperHelpers.ClientTimeZoneInfo = _clientTimeZoneInfo; var result = _map.Map <WorkOrder, ViewModel.WorkOrder>(workOrder); return(Json(new { sNewRef = result.tabref, sNewLabel = result.tablabel, iNewID = result.ID })); }
public ActionResult View(int id) { WorkOrder workOrder = woServ.Get(id); var m = map.Map <WorkOrder, ViewModel.WorkOrder>(workOrder); m.def = def; return(View(m)); }
public ActionResult ViewForEmail(int id) { WorkOrder workOrder = woServ.Get(id); var m = map.Map <WorkOrder, ViewModel.WorkOrder>(workOrder); m.def = def; ViewBag.OrganizationName = def.getConfig("OrganizationName"); return(PartialView(m)); }
public ActionResult View(int id) { WorkOrder workOrder = _woServ.Get(id); MapperHelpers.ClientTimeZoneInfo = _clientTimeZoneInfo; MapperHelpers.Defaults = _defaults; var m = _map.Map <WorkOrder, ViewModel.WorkOrder>(workOrder); return(View(m)); }
public ActionResult ViewForEmail(int id) { WorkOrder workOrder = _woServ.Get(id); MapperHelpers.ClientTimeZoneInfo = _clientTimeZoneInfo; MapperHelpers.Defaults = _defaults; var m = _map.Map <WorkOrder, ViewModel.WorkOrder>(workOrder); ViewBag.OrganizationName = _defaults.getConfig("OrganizationName"); return(PartialView(m)); }
public ActionResult Edit(int id, string userName, List <WorkerRequest> workerRequestList) { WorkOrder workOrder = woServ.Get(id); UpdateModel(workOrder); woServ.Save(workOrder, workerRequestList, userName); return(Json(new { status = "OK", editedID = id })); }
public ActionResult Create(WorkOrder wo, string userName, List <WorkerRequest> workerRequestList) { UpdateModel(wo); WorkOrder neworder = woServ.Create(wo, userName); // JSON object with new work order data var result = map.Map <WorkOrder, ViewModel.WorkOrder>(neworder); return(Json(new { sNewRef = result.tabref, sNewLabel = result.tablabel, iNewID = result.ID })); }
public void createcombined_valid_post_returns_json() { //Arrange var combined = new EmployerWoCombined { name = "unit test" }; var employer = new Employer { ID = 4242 }; var wo = new WorkOrder { ID= 4243, EmployerID = 4242 }; serv.Setup(p => p.Create(It.IsAny<Employer>(), "UnitTest")).Returns(employer); woServ.Setup(p => p.Create(It.IsAny<WorkOrder>(), "UnitTest")).Returns(wo); ctrlr.ValueProvider = form.ToValueProvider(); //Act var result = ctrlr.CreateCombined(combined, "UnitTest"); //Assert Assert.IsInstanceOfType(result, typeof(JsonResult)); //Assert.IsInstanceOfType(result.Data["EmployerWoConbined"], typeof(EmployerWoCombined)); Assert.AreEqual("{ iEmployerID = 4242, iWorkOrderID = 4243, jobSuccess = True }", result.Data.ToString()); }
public ActionResult Edit(int id) { // Retrieve Work Order WorkOrder workOrder = woServ.Get(id); // Retrieve Worker Requests associated with Work Order ViewBag.workerRequests = workOrder.workerRequests.Select(a => new SelectListItem { Value = a.WorkerID.ToString(), Text = a.workerRequested.dwccardnum.ToString() + ' ' + a.workerRequested.Person.firstname1 + ' ' + a.workerRequested.Person.lastname1 }); var m = map.Map <WorkOrder, ViewModel.WorkOrder>(workOrder); m.def = def; return(PartialView("Edit", m)); }
public ActionResult Edit(int id) { // Retrieve Work Order WorkOrder workOrder = _woServ.Get(id); // Retrieve Worker Requests associated with Work Order var workerRequests = workOrder.workerRequestsDDD; var selectListItems = workerRequests?.Select(a => new SelectListItem { Value = a.WorkerID.ToString(), Text = a.workerRequested.dwccardnum.ToString() + ' ' + a.workerRequested.Person.firstname1 + ' ' + a.workerRequested.Person.lastname1 }); ViewBag.workerRequests = selectListItems; MapperHelpers.ClientTimeZoneInfo = _clientTimeZoneInfo; MapperHelpers.Defaults = _defaults; var m = _map.Map <WorkOrder, ViewModel.WorkOrder>(workOrder); return(PartialView("Edit", m)); }
public void WorkOrderController_edit_post_invalid_throws_exception() { //Arrange var workOrder = new WorkOrder(); workOrder.workerRequests = workerRequest; int testid = 4243; // // Mock service and setup SaveWorkOrder mock _serv.Setup(p => p.Get(testid)).Returns(workOrder); // // Mock HttpContext so that ModelState and FormCollection work fakeform.Remove("contactName"); _ctrlr.ValueProvider = fakeform.ToValueProvider(); // //Act List<WorkerRequest> list = new List<WorkerRequest>(); _ctrlr.Edit(testid, fakeform, "UnitTest", list); //Assert }
public void WorkOrderController_edit_post_valid_updates_model_redirects_to_index() { //Arrange int testid = 4242; WorkOrder fakeworkOrder = new WorkOrder(); fakeworkOrder.workerRequests = workerRequest; WorkOrder savedworkOrder = new WorkOrder(); string user = ""; _serv.Setup(p => p.Get(testid)).Returns(fakeworkOrder); _serv.Setup(x => x.Save(It.IsAny<WorkOrder>(), It.IsAny<string>()) ).Callback((WorkOrder p, string str) => { savedworkOrder = p; user = str; }); _ctrlr.SetFakeControllerContext(); _ctrlr.ValueProvider = fakeform.ToValueProvider(); //Act List<WorkerRequest> list = new List<WorkerRequest>(); list.Add(new WorkerRequest { WorkerID = 12345 }); list.Add(new WorkerRequest { WorkerID = 30002 }); list.Add(new WorkerRequest { WorkerID = 30311 }); list.Add(new WorkerRequest { WorkerID = 30420 }); list.Add(new WorkerRequest { WorkerID = 30421 }); var result = _ctrlr.Edit(testid, fakeform, "UnitTest", list) as JsonResult; //Assert //Assert.AreEqual("Index", result.RouteValues["action"]); Assert.AreEqual(fakeworkOrder, savedworkOrder); Assert.AreEqual(savedworkOrder.workSiteAddress1, "blah"); Assert.AreEqual(savedworkOrder.city, "UnitTest"); Assert.AreEqual(savedworkOrder.state, "WA"); Assert.AreEqual(savedworkOrder.phone, "123-456-7890"); Assert.AreEqual(savedworkOrder.zipcode, "12345-6789"); Assert.AreEqual(savedworkOrder.typeOfWorkID, 1); Assert.AreEqual(savedworkOrder.dateTimeofWork, Convert.ToDateTime("1/1/2011 12:00:00 AM")); Assert.AreEqual(savedworkOrder.transportMethodID, 1); Assert.AreEqual(savedworkOrder.transportFee, Convert.ToDouble("20.00")); //Assert.AreEqual(savedworkOrder.workerRequests.Count(), 5); }
public void WorkOrderController_edit_post_workerRequests_finds_duplicates() { //Arrange int testid = 4242; WorkOrder fakeworkOrder = new WorkOrder(); fakeworkOrder.workerRequests = workerRequest; WorkerRequest foo1 = new WorkerRequest { ID = 111, WorkerID = 1, WorkOrderID = testid, workerRequested = new Worker { ID = 1, dwccardnum = 12345 } }; WorkerRequest foo2 = new WorkerRequest { ID = 222, WorkerID = 2, WorkOrderID = testid, workerRequested = new Worker { ID = 2, dwccardnum = 12346 } }; workerRequest.Add(foo1); workerRequest.Add(foo2); WorkOrder savedworkOrder = new WorkOrder(); string user = ""; _serv.Setup(p => p.Get(testid)).Returns(fakeworkOrder); _serv.Setup(x => x.Save(It.IsAny<WorkOrder>(), It.IsAny<string>()) ).Callback((WorkOrder p, string str) => { savedworkOrder = p; user = str; }); _wrServ.Setup(x => x.GetWorkerRequestsByNum(testid, 1)).Returns(foo1); _wrServ.Setup(x => x.GetWorkerRequestsByNum(testid, 2)).Returns(foo2); _ctrlr.SetFakeControllerContext(); _ctrlr.ValueProvider = fakeform.ToValueProvider(); List<WorkerRequest> list = new List<WorkerRequest>(); list.Add(new WorkerRequest { WorkerID = 12345 }); list.Add(new WorkerRequest { WorkerID = 30002 }); list.Add(new WorkerRequest { WorkerID = 30311 }); list.Add(new WorkerRequest { WorkerID = 30420 }); list.Add(new WorkerRequest { WorkerID = 30421 }); //Act var result = _ctrlr.Edit(testid, fakeform, "UnitTest", list) as JsonResult; //Assert //Assert.AreEqual("Index", result.RouteValues["action"]); Assert.AreEqual(fakeworkOrder, savedworkOrder); Assert.AreEqual(savedworkOrder.workerRequests.Count(), 5); Assert.AreEqual(savedworkOrder.workerRequests.Count(a => a.WorkerID == 12345), 1); Assert.AreEqual(savedworkOrder.workerRequests.Count(a => a.WorkerID == 30002), 1); Assert.AreEqual(savedworkOrder.workerRequests.Count(a => a.WorkerID == 30311), 1); Assert.AreEqual(savedworkOrder.workerRequests.Count(a => a.WorkerID == 30420), 1); Assert.AreEqual(savedworkOrder.workerRequests.Count(a => a.WorkerID == 30421), 1); Assert.AreEqual(savedworkOrder.workerRequests.Count(a => a.WorkerID == 12346), 0); }
/// <summary> /// Activate work order. Assumes start at WA ListTab. /// </summary> /// <param name="_emp"></param> /// <param name="_wo"></param> /// <param name="_wa"></param> /// <returns></returns> public bool workAssignmentActivate(Employer _emp, WorkOrder _wo, WorkAssignment _wa) { // Verify we're on the WA ListTab we expected WaitForElement(By.Id("walt-" + _wo.ID)); // Look for WA datatable to have a first row (at least one record) By walt = By.XPath("//table[@id='workAssignTable-wo-" + _wo.ID + "']/tbody/tr/td[1]"); // The #####-## order number from the first column var waltText = WaitForElement(walt).Text; WaitForElementValue(walt, _wa.getFullPseudoID()); Assert.AreEqual(_wa.getFullPseudoID(), waltText, "Unexpected PseudoID in assignment's list"); Thread.Sleep(1000); WaitThenClickElement(By.Id("activateWorkOrderButton-" + _wo.ID)); // todo: find a way to change this hard-coded value assignment _wo.status = 40; // changing test object to reflect activate status from previous action return true; }
public bool workOrderCreate(Employer _emp, WorkOrder _wo) { string prefix = "WO0-"; WaitThenClickElement(By.Id("workOrderCreateTab_" + _emp.ID)); WaitForElement(By.Id(prefix + "contactName")); ReplaceElementText(By.Id(prefix + "contactName"), _wo.contactName); //ReplaceElementText(By.Id(prefix + "dateTimeofWork"), String.Format("{MM/dd/yyyy hh:mm tt}", _wo.dateTimeofWork)); ReplaceElementText(By.Id(prefix + "paperOrderNum"), _wo.paperOrderNum.ToString()); //ReplaceElementText(By.Id(prefix + "timeFlexible"), _wo.timeFlexible.ToString()); //ReplaceElementText(By.Id(prefix + "permanentPlacement"), _wo.permanentPlacement); ReplaceElementText(By.Id(prefix + "workSiteAddress1"), _wo.workSiteAddress1); ReplaceElementText(By.Id(prefix + "workSiteAddress2"), _wo.workSiteAddress2); //ReplaceElementText(By.Id(prefix + "englishRequired"), _wo.englishRequired); ReplaceElementText(By.Id(prefix + "phone"), _wo.phone); //ReplaceElementText(By.Id(prefix + "lunchSupplied"), _wo.lunchSupplied); ReplaceElementText(By.Id(prefix + "city"), _wo.city); ReplaceElementText(By.Id(prefix + "state"), _wo.state); //ReplaceElementText(By.Id(prefix + "transportMethodID"), _wo.transportMethodID); ReplaceElementText(By.Id(prefix + "zipcode"), _wo.zipcode); //ReplaceElementText(By.Id(prefix + "transportFee"), _wo.transportFee); //ReplaceElementText(By.Id(prefix + "transportFeeExtra"), _wo.transportFeeExtra); //ReplaceElementText(By.Id(prefix + "englishRequiredNote"), _wo.englishRequiredNote); ReplaceElementText(By.Id(prefix + "description"), _wo.description); // SelectOption(By.Id(prefix + "status"), MacheteLookup.cache.First(c => c.category == "orderstatus" && c.ID == _wo.status).text_EN); SelectOptionByIndex(By.Id(prefix + "transportMethodID"), _wo.transportMethodID); SelectOptionByIndex(By.Id(prefix + "timeFlexible"), _wo.timeFlexible ? 2 : 1); SelectOptionByIndex(By.Id(prefix + "permanentPlacement"), _wo.permanentPlacement ? 2 : 1); SelectOptionByIndex(By.Id(prefix + "englishRequired"), _wo.englishRequired ? 2 : 1); SelectOptionByIndex(By.Id(prefix + "lunchSupplied"), _wo.lunchSupplied ? 2 : 1); Thread.Sleep(1000); //prevent race condition if (_wo.workerRequests != null) foreach (var request in _wo.workerRequests) { WaitThenClickElement(By.Id("addRequestBtn-" + _wo.ID)); ReplaceElementText(By.XPath("//*[@id='workerTable-0_filter']/label/input"), request.ID.ToString()); WaitThenClickElement(By.XPath("//*[@id='workerTable-0']/tbody/tr/td[1]")); } Thread.Sleep(1000); //prevent race condition // // save work order _d.FindElement(By.Id(prefix + "SaveBtn")).Click(); // // Find new work order tab (css class "WO"), get embedded WOID, populate // WO object _wo.ID = getSelectedTabRecordID("WO"); Assert.IsTrue(_d.FindElement(By.CssSelector("li.WO.ui-tabs-selected > a")) .Text == Machete.Web.Resources.WorkOrders.tabprefix + _wo.getTabLabel(), "Work order anchor label doesn't match work order"); return true; }
public void WorkOrderController_delete_get_returns_JSON() { //Arrange int testid = 4242; WorkOrder fakeworkOrder = new WorkOrder(); _serv.Setup(p => p.Get(testid)).Returns(fakeworkOrder); //Act JsonResult result = (JsonResult)_ctrlr.Delete(testid, "test user"); //Assert IDictionary<string,object> data = new RouteValueDictionary(result.Data); Assert.AreEqual("OK", data["status"]); Assert.AreEqual(4242, data["deletedID"]); }
public void WorkOrderController_create_valid_post_returns_JSON() { //Arrange var workOrder = new WorkOrder(); var _model = new WorkOrder(); _serv.Setup(p => p.Create(workOrder, "UnitTest")).Returns(() => workOrder); _ctrlr.ValueProvider = fakeform.ToValueProvider(); //Act var result = (JsonResult)_ctrlr.Create(workOrder, "UnitTest", workerRequest); //Assert Assert.IsInstanceOfType(result, typeof(JsonResult)); Assert.AreEqual(result.Data.ToString(), "{ sNewRef = /WorkOrder/Edit/4242, sNewLabel = Order #: 04242 @ blah, iNewID = 4242 }"); }
public void DeleteWorkOrder() { // //Arrange _repo = new Mock<IWorkOrderRepository>(); _uow = new Mock<IUnitOfWork>(); var _wo = (WorkOrder)Records.order.Clone(); string user = "******"; int id = 1; WorkOrder dp = new WorkOrder(); _repo.Setup(r => r.Delete(It.IsAny<WorkOrder>())).Callback((WorkOrder p) => { dp = p; }); _repo.Setup(r => r.GetById(id)).Returns(_wo); _waServ = new Mock<IWorkAssignmentService>(); var _serv = new WorkOrderService(_repo.Object, _waServ.Object, _uow.Object); // //Act _serv.Delete(id, user); // //Assert Assert.AreEqual(dp, _wo); }
public ActionResult Create(WorkOrder wo, string userName, string workerAssignments) { UpdateModel(wo); // Retrieve user ID of signed in Employer string userID = HttpContext.User.Identity.GetUserId(); // Retrieve Employer record Employer onlineEmployer = eServ.GetRepo().GetAllQ().Where(e => e.onlineSigninID == userID).FirstOrDefault(); if (onlineEmployer != null) { // Employer has created profile or work order already // Associate WO with Employer wo.EmployerID = onlineEmployer.ID; } else { // Employer has NOT created profile or work order yet Employer employer = new Employer(); // Set up default values from WO employer.name = wo.contactName; employer.phone = wo.phone; employer.address1 = wo.workSiteAddress1; employer.address2 = wo.workSiteAddress2; employer.city = wo.city; employer.state = wo.state; employer.zipcode = wo.zipcode; // Set up default online Employer profile employer.isOnlineProfileComplete = true; employer.onlineSigninID = userID; employer.email = HttpContext.User.Identity.GetUserName(); // The Employer's username is their email address employer.active = true; employer.business = false; employer.blogparticipate = false; employer.onlineSource = true; employer.returnCustomer = false; employer.receiveUpdates = true; employer.business = false; Employer newEmployer = eServ.Create(employer, userName); if (newEmployer != null) { wo.EmployerID = newEmployer.ID; } } // Set disclosure agreement - to get here, the user had to accept wo.disclosureAgreement = true; if (workerAssignments == "") { // Set WA counter wo.waPseudoIDCounter = 0; } // Create Work Order WorkOrder neworder = woServ.Create(wo, userName); if (workerAssignments != "") { // Create Work Assignments dynamic parsedWorkerRequests = JObject.Parse(workerAssignments); // Set WA counter wo.waPseudoIDCounter = parsedWorkerRequests["assignments"].Count; woServ.Save(neworder, userName); for (int i = 0; i < parsedWorkerRequests["assignments"].Count; i++) { WorkAssignment wa = new WorkAssignment(); // Create WA from Employer data wa.workOrderID = neworder.ID; wa.skillID = parsedWorkerRequests["assignments"][i].skillId; wa.hours = parsedWorkerRequests["assignments"][i].hours; wa.weightLifted = parsedWorkerRequests["assignments"][i].weight; wa.hourlyWage = parsedWorkerRequests["assignments"][i].hourlyWage; // TODO: consider looking this up instead - however, this is the value quoted to the customer online wa.pseudoID = i + 1; wa.description = parsedWorkerRequests["assignments"][i].desc; // Set up defaults wa.active = true; wa.englishLevelID = 0; // TODO: note- all incoming online work assignments won't have the proper English level set (this needs to be set by the worker center) wa.surcharge = 0.0; wa.days = 1; wa.qualityOfWork = 0; wa.followDirections = 0; wa.attitude = 0; wa.reliability = 0; wa.transportProgram = 0; WorkAssignment newWa = waServ.Create(wa, userName); } // TODO: test // New Worker Requests to add for (int i = 0; i < parsedWorkerRequests["requests"].Count; i++) { WorkerRequest wr = new WorkerRequest(); // Create Worker Request from Employer data wr.WorkOrderID = neworder.ID; wr.WorkerID = parsedWorkerRequests["requests"][i].workerId; WorkerRequest newWr = wrServ.Create(wr, userName); } } if (neworder.transportFee > 0) { return View("IndexPrePaypal", neworder); } else { return View("IndexComplete", neworder); } }
/// <summary> /// Determines displayState value in WorkOrder/AjaxHandler. Display state is used to provide color highlighting to records based on state. /// The displayState is not presented to the user, so don't have to provide internationalization text. /// </summary> /// <param name="wo">WorkOrder</param> /// <returns>status string</returns> private string _getDisplayState(WorkOrder wo) { string status = lcache.textByID(wo.status, "en"); if (wo.status == WorkOrder.iCompleted) { // If WO is completed, but 1 (or more) WA aren't assigned - the WO is still Unassigned if (wo.workAssignments.Count(wa => wa.workerAssignedID == null) > 0) { return "Unassigned"; } // If WO is completed, but 1 (or more) Assigned Worker(s) never signed in, then the WO has been Orphaned if (wo.workAssignments.Count(wa => wa.workerAssignedID != null && wa.workerSigninID == null) > 0) { return "Orphaned"; } } return status; }
/// <summary> /// /// </summary> /// <param name="p"></param> /// <param name="showWorkers"></param> /// <returns></returns> public object dtResponse(ref WorkOrder p, bool showWorkers) { int ID = p.ID; return new { tabref = p.getTabRef(), tablabel = Machete.Web.Resources.WorkOrders.tabprefix + p.getTabLabel(), EID = Convert.ToString(p.EmployerID), WOID = System.String.Format("{0,5:D5}", p.paperOrderNum), dateTimeofWork = p.dateTimeofWork.ToString(), status = lcache.textByID(p.status, CI.TwoLetterISOLanguageName), WAcount = p.workAssignments.Count(a => a.workOrderID == ID).ToString(), contactName = p.contactName, workSiteAddress1 = p.workSiteAddress1, zipcode = p.zipcode, dateupdated = System.String.Format("{0:MM/dd/yyyy HH:mm:ss}", p.dateupdated), updatedby = p.Updatedby, transportMethod = lcache.textByID(p.transportMethodID, CI.TwoLetterISOLanguageName), displayState = _getDisplayState(p), onlineSource = p.onlineSource ? Shared.True : Shared.False, emailSentCount = p.Emails.Where(e => e.statusID == Email.iSent || e.statusID == Email.iReadyToSend).Count(), emailErrorCount = p.Emails.Where(e => e.statusID == Email.iTransmitError).Count(), recordid = p.ID.ToString(), workers = showWorkers ? from w in p.workAssignments select new { WID = w.workerAssigned != null ? (int?)w.workerAssigned.dwccardnum : null, name = w.workerAssigned != null ? w.workerAssigned.Person.fullName() : null, skill = lcache.textByID(w.skillID, CI.TwoLetterISOLanguageName), hours = w.hours, wage = w.hourlyWage } : null }; }
public ActionResult Create(WorkOrder _wo, string userName, List<WorkerRequest> workerRequests2) { UpdateModel(_wo); WorkOrder neworder = woServ.Create(_wo, userName); // //New requests to add foreach (var add in workerRequests2) { add.workOrder = neworder; add.workerRequested = wServ.Get(add.WorkerID); add.updatedby(userName); add.createdby(userName); neworder.workerRequests.Add(add); } woServ.Save(neworder, userName); // // return Json(new { sNewRef = neworder.getTabRef(), sNewLabel = Machete.Web.Resources.WorkOrders.tabprefix + neworder.getTabLabel(), iNewID = neworder.ID }, JsonRequestBehavior.AllowGet); }
public bool workOrderValidate(WorkOrder _wo) { string prefix = "WO" + _wo.ID.ToString() + "-"; Func<string, string, bool> getAttributeAssertEqual = ((p, q) => { Assert.AreEqual(p, WaitForElement(By.Id(prefix + q)).GetAttribute("value"), "New work order " + q + "doesn't match original."); return true; }); getAttributeAssertEqual(_wo.contactName, "contactName"); Assert.IsTrue(WaitForElement(By.Id(prefix + "paperOrderNum")).GetAttribute("value") != "", "paper order number is empty"); //getAttributeAssertEqual(_wo.paperOrderNum.ToString(), "paperOrderNum"); getAttributeAssertEqual(_wo.workSiteAddress1, "workSiteAddress1"); getAttributeAssertEqual(_wo.workSiteAddress2, "workSiteAddress2"); getAttributeAssertEqual(_wo.phone, "phone"); getAttributeAssertEqual(_wo.city, "city"); getAttributeAssertEqual(_wo.state, "state"); getAttributeAssertEqual(_wo.zipcode, "zipcode"); getAttributeAssertEqual(_wo.description, "description"); WaitForElement(By.Id(prefix + "status")); string optionText = GetOptionText(By.Id(prefix + "status")); Assert.AreEqual(_wo.status, MacheteLookup.cache.First(c => c.category == "orderstatus" && c.text_EN == optionText).ID); WaitForElement(By.Id(prefix + "timeFlexible")); Assert.AreEqual(_wo.timeFlexible ? 2:1, GetOptionIndex(By.Id(prefix + "timeFlexible"))); WaitForElement(By.Id(prefix + "permanentPlacement")); Assert.AreEqual(_wo.permanentPlacement ? 2 : 1, GetOptionIndex(By.Id(prefix + "permanentPlacement"))); WaitForElement(By.Id(prefix + "englishRequired")); Assert.AreEqual(_wo.englishRequired ? 2 : 1, GetOptionIndex(By.Id(prefix + "englishRequired"))); WaitForElement(By.Id(prefix + "lunchSupplied")); Assert.AreEqual(_wo.lunchSupplied ? 2 : 1, GetOptionIndex(By.Id(prefix + "lunchSupplied"))); WaitForElement(By.Id(prefix + "transportMethodID")); Assert.AreEqual(_wo.transportMethodID, GetOptionIndex(By.Id(prefix + "transportMethodID"))); WaitForElement(By.Id("workerRequests2_WO-" + _wo.ID.ToString())); if (_wo.workerRequests != null) foreach (var request in _wo.workerRequests) { WaitForElementValue(By.XPath("//*[@id='workerRequests2_WO-" + _wo.ID + "']/option"), request.fullNameAndID); } return true; }
public void WorkOrderController_edit_get_returns_workOrder() { //Arrange int testid = 4242; WorkOrder fakeworkOrder = new WorkOrder(); fakeworkOrder.workerRequests = workerRequest; _serv.Setup(p => p.Get(testid)).Returns(fakeworkOrder); //Act var result = (PartialViewResult)_ctrlr.Edit(testid); //Assert Assert.IsInstanceOfType(result.ViewData.Model, typeof(WorkOrder)); }
public void Unit_WA_Controller_create_valid_post_returns_json() { //Arrange WorkAssignment _asmt = new WorkAssignment(); fakeform.Add("ID", "11"); fakeform.Add("englishlevelID", "0"); fakeform.Add("skillID", "60"); fakeform.Add("hours", "5"); fakeform.Add("hourlyWage", "12"); fakeform.Add("days", "1"); WorkOrder _wo = new WorkOrder(); _wo.paperOrderNum = 12345; _wo.ID = 123; int _num = 0; string username = "******"; _woServ.Setup(p => p.Get(_num)).Returns(() => _wo); _waServ.Setup(p => p.Create(_asmt, username)).Returns(() => _asmt); _ctrlr.ValueProvider = fakeform.ToValueProvider(); //Act JsonResult result = (JsonResult)_ctrlr.Create(_asmt, username); //Assert Assert.IsInstanceOfType(result, typeof(JsonResult)); Assert.AreEqual("{ sNewRef = /WorkAssignment/Edit/12345, sNewLabel = Assignment #: 12345-01, iNewID = 12345 }", result.Data.ToString()); }
/// <summary> /// Create new assignment. Last action executes Create Button, returning to List Tab. /// </summary> /// <param name="emp"></param> /// <param name="wo"></param> /// <param name="wa"></param> /// <returns></returns> public bool workAssignmentCreate(Employer emp, WorkOrder wo, WorkAssignment wa) { // Click on the assignment Create Tab WaitThenClickElement(By.Id("wact-" + wo.ID)); //the ID here is the WorkOrder.ID, not the Employer.ID WaitForElement(By.Id(wa.idPrefix + "description")); SelectOption(By.Id(wa.idPrefix + "englishLevelID"), wa.englishLevelID.ToString()); SelectOptionByValue(By.Id(wa.idPrefix + "skillID"), wa.skillID.ToString()); ReplaceElementText(By.Id(wa.idPrefix + "hourlyWage"), wa.hourlyWage.ToString()); SelectOption(By.Id(wa.idPrefix + "hours"), wa.hours.ToString()); if (wa.hourRange.ToString().Length > 0) SelectOption(By.Id(wa.idPrefix + "hourRange"), wa.hourRange.ToString()); SelectOption(By.Id(wa.idPrefix + "days"), wa.days.ToString()); ReplaceElementText(By.Id(wa.idPrefix + "description"), wa.description); WaitForElement(By.Id("WO" + wo.ID + "-waCreateBtn")).Click(); Thread.Sleep(1000); wa.ID = getSelectedTabRecordID("WA"); WaitForElement(By.Id(wa.idPrefix + "EditTab")); WaitThenClickElement(By.Id("walt-" + wo.ID)); return true; }
/// <summary> /// determines displayState value in WorkOrder/AjaxHandler /// </summary> /// <param name="wo">WorkOrder</param> /// <returns>status string</returns> private string _getDisplayState(WorkOrder wo) { string status = lcache.textByID(wo.status, "en"); //TODO: Pull out WorkOrder status strings, use WorkOrder object reference if (status == "Completed") { if (wo.workAssignments.Count(wa => wa.workerAssignedID == null) > 0) return "Unassigned"; if (wo.workAssignments.Count(wa => wa.workerAssignedID != null && wa.workerSigninID == null) > 0) return "Orphaned"; } return status; }
public bool workAssignmentValidate(Employer _emp, WorkOrder _wo, WorkAssignment _wa) { Thread.Sleep(1000); WaitThenClickElement(By.Id("WO" + _wo.ID + "-EditTab")); Thread.Sleep(1000); WaitThenClickElement(By.Id("WO" + _wo.ID + "-EditTab")); Thread.Sleep(1000); WaitForElement(By.Id("walt-" + _wo.ID)); WaitThenClickElement(By.Id("walt-" + _wo.ID)); Thread.Sleep(1000); WaitForElement(By.Id("workAssignTable-wo-" + _wo.ID + "_searchbox")); string idString = _wo.ID.ToString("D5") + "-" + ((int)_wa.pseudoID).ToString("D2"); ReplaceElementText(By.Id("workAssignTable-wo-" + _wo.ID + "_searchbox"), idString); Thread.Sleep(1000); string xpath = "//*[@id='workAssignTable-wo-" + _wo.ID + "']/tbody/tr/td[.='" + idString + "']"; Assert.IsTrue(WaitAndDoubleClick(By.XPath(xpath)), "Cannot find work assignment row to click."); //Now, check each of the fields string prefix = "WA" + _wa.ID + "-"; WaitForElement(By.Id(prefix + "englishLevelID")); WaitForElement(By.Id(prefix + "hours")); //Doing a lot of waits up front here because I was having some problems with the englishLevelID getting WaitForElement(By.Id(prefix + "hourRange")); //detached from the DOM if I grab it too early. A short sleep seemed to work, but waits make sure. WaitForElement(By.Id(prefix + "days")); WaitForElement(By.Id(prefix + "skillID")); WaitForElement(By.Id(prefix + "hourlyWage")); WaitForElement(By.Id(prefix + "total")); Thread.Sleep(50); Assert.AreEqual(_wa.englishLevelID.ToString(), GetOptionValue(By.Id(prefix + "englishLevelID"))); Assert.AreEqual(_wa.hours, GetOptionIndex(By.Id(prefix + "hours"))); if (_wa.hourRange != null) Assert.AreEqual(_wa.hourRange, GetOptionIndex(By.Id(prefix + "hourRange")) + 6); Assert.AreEqual(_wa.days, GetOptionIndex(By.Id(prefix + "days"))); string skillIDValue = GetOptionValue(By.Id(prefix + "skillID")); Assert.AreEqual(_wa.skillID.ToString(), skillIDValue); WaitForElement(By.Id(prefix + "hourlyWage")); Assert.AreEqual(_wa.hourlyWage.ToString("F"), WaitForElement(By.Id(prefix + "hourlyWage")).GetAttribute("value")); WaitForElement(By.Id(prefix + "total")); Assert.AreEqual("$" +(_wa.hourlyWage * _wa.hours * _wa.days).ToString("F"), WaitForElement(By.Id(prefix + "total")).GetAttribute("value")); Assert.AreEqual(_wa.pseudoID.ToString(), WaitForElement(By.Id(prefix + "pseudoID")).GetAttribute("Value")); // Now change field values and check field relationships //reset to default values SelectOptionByIndex(By.Id(prefix + "englishLevelID"), 0); SelectOptionByIndex(By.Id(prefix + "skillID"), 0); ReplaceElementText(By.Id(prefix + "hourlyWage"), "0"); SelectOptionByIndex(By.Id(prefix + "hours"), 0); SelectOptionByIndex(By.Id(prefix + "hourRange"), 0); SelectOptionByIndex(By.Id(prefix + "days"), 0); SelectOptionByIndex(By.Id(prefix + "hourRange"), 0); //check default form response Assert.AreEqual("not calculable", WaitForElement(By.Id(prefix + "total")).GetAttribute("value")); Assert.AreEqual("not calculable", WaitForElement(By.Id(prefix + "totalRange")).GetAttribute("value")); //change skill and make sure wage and hours changed SelectOptionByIndex(By.Id(prefix + "skillID"), 1); Assert.IsFalse(Convert.ToInt32(WaitForElement(By.Id(prefix + "hourlyWage")).GetAttribute("value")) == 0, "Hourly Wage failed reaction to skill selection"); var indexResult = GetOptionIndex(By.Id(prefix + "hours")); //Assert.AreEqual(0, indexResult, "Hours dropdown failed reaction to skill selection"); //set hourly range and days then check total and max total SelectOptionByIndex(By.Id(prefix + "hourRange"), 3); SelectOptionByIndex(By.Id(prefix + "days"), 1); int hourlyWage = Convert.ToInt32(WaitForElement(By.Id(prefix + "hourlyWage")).GetAttribute("value")); int hoursWork = Convert.ToInt32(WaitForElement(By.Id(prefix + "hours")).GetAttribute("value")); int hourRange = Convert.ToInt32(GetOptionValue(By.Id(prefix + "hourRange"))); int daysWork = Convert.ToInt32(GetOptionValue(By.Id(prefix + "days"))); Assert.AreEqual("$" + (hourlyWage * hoursWork * daysWork).ToString("F"), WaitForElement(By.Id(prefix + "total")).GetAttribute("value"), "Total pay doesn't match hour, wage and day calculation"); Assert.AreEqual("$" + (hourlyWage * hourRange * daysWork).ToString("F"), WaitForElement(By.Id(prefix + "totalRange")).GetAttribute("value"), "Max Total pay doesn't match hourRange, wage and day calculation"); //select fixed job and verify hourly pay is fixed // TODO: Find another way of testing this. I took fixed categories out of the Lookups. // Centers should be aware that they *can* fix pay in the config, but Casa Latina is the // only center that's had that as a requirement for certain types of jobs. //String skillValue = MacheteLookup.cache.First(x => x.category == LCategory.skill && x.text_EN == "DWC Chambita 1hr").ID.ToString(); //SelectOptionByValue(By.Id(prefix + "skillID"), skillValue); //Thread.Sleep(1000); // to avoid race condition //Assert.AreEqual("true", WaitForElement(By.Id(prefix + "hourlyWage")).GetAttribute("disabled"), "Hourly Wage should be fixed (disabled) in response to skill selection"); return true; }
public ActionResult Create() { WorkOrder wo = new WorkOrder(); // Retrieve user ID of signed in Employer string userID = HttpContext.User.Identity.GetUserId(); // Retrieve Employer record Employer employer = eServ.GetRepo().GetAllQ().Where(e => e.onlineSigninID == userID).FirstOrDefault(); if (employer != null) { // Employer has created profile or work order already // Associate WO with Employer wo.EmployerID = employer.ID; // Set up default values from Employer record wo.contactName = employer.name; wo.phone = employer.phone; wo.workSiteAddress1 = employer.address1; wo.workSiteAddress2 = employer.address2; wo.city = employer.city; wo.state = employer.state; wo.zipcode = employer.zipcode; } // Set default values wo.dateTimeofWork = DateTime.Today.AddHours(9).AddDays(3); // Set default work time to 9am three days from now wo.transportMethodID = Lookups.getDefaultID(LCategory.transportmethod); wo.typeOfWorkID = Lookups.getDefaultID(LCategory.worktype); wo.status = Lookups.getDefaultID(LCategory.orderstatus); wo.timeFlexible = true; wo.onlineSource = true; wo.disclosureAgreement = false; ViewBag.workerRequests = new List<SelectListItem> { }; // Build Skill lookups ViewBag.ID = new int[22]; ViewBag.text_EN = new string[22]; ViewBag.text_ES = new string[22]; ViewBag.wage = new double[22]; ViewBag.minHour = new int[22]; ViewBag.workType = new int[22]; ViewBag.desc_ES = new string[22]; ViewBag.desc_EN = new string[22]; //IEnumerable<Lookup> lookup = lcache.getCache(); List<SelectListEmployerSkills> lookup = Lookups.getOnlineEmployerSkill(); int counter = 0; for (int i = 0; i < lookup.Count(); i++) { SelectListEmployerSkills lup = lookup.ElementAt(i); //Lookup lup = lookup.ElementAt(i); //if (lup.ID == 60 || lup.ID == 61 || lup.ID == 62 || lup.ID == 63 || lup.ID == 64 || lup.ID == 65 || lup.ID == 66 || lup.ID == 67 || lup.ID == 68 || lup.ID == 69 || lup.ID == 77 || lup.ID == 83 || lup.ID == 88 || lup.ID == 89 || lup.ID == 118 || lup.ID == 120 || lup.ID == 122 || lup.ID == 128 || lup.ID == 131 || lup.ID == 132 || lup.ID == 133 || lup.ID == 183) if (lup.ID == 60 || lup.ID == 61 || lup.ID == 62 || lup.ID == 63 || lup.ID == 64 || lup.ID == 65 || lup.ID == 66 || lup.ID == 67 || lup.ID == 68 || lup.ID == 69 || lup.ID == 77 || lup.ID == 83 || lup.ID == 88 || lup.ID == 89 || lup.ID == 118 || lup.ID == 120 || lup.ID == 122 || lup.ID == 128 || lup.ID == 131 || lup.ID == 132 || lup.ID == 133 || lup.ID == 183) { ViewBag.ID[counter] = lup.ID; ViewBag.wage[counter] = lup.wage; ViewBag.minHour[counter] = lup.minHour; ViewBag.workType[counter] = lup.typeOfWorkID; ViewBag.text_EN[counter] = lup.skillDescriptionEn; ViewBag.text_ES[counter] = lup.skillDescriptionEs; counter++; } } return PartialView("Create", wo); }
public ActionResult Create(int EmployerID) { WorkOrder _wo = new WorkOrder(); _wo.EmployerID = EmployerID; _wo.dateTimeofWork = DateTime.Today; _wo.transportMethodID = Lookups.getDefaultID(LCategory.transportmethod); // TODO: investigate if it make sense to have this as a default _wo.typeOfWorkID = Lookups.getDefaultID(LCategory.worktype); // TODO: investigate if it make sense to have this as a default _wo.status = Lookups.getDefaultID(LCategory.orderstatus); _wo.timeFlexible = true; ViewBag.workerRequests = new List<SelectListItem> {}; return PartialView("Create", _wo); }
/// <summary> /// Returns Work Order object to AjaxHandler - presented on the WorkOrder Details tab /// </summary> /// <param name="wo">WorkOrder</param> /// <param name="showWorkers">bool flag determining whether the workers associated with the WorkOrder should be retrieved</param> /// <returns>Work Order </returns> public object dtResponse( WorkOrder wo, bool showWorkers) { // tabref = "/HirerWorkOrder/Edit" + Convert.ToString(wo.ID), int ID = wo.ID; return new { tabref = "/HirerWorkOrder/View/" + Convert.ToString(wo.ID), tablabel = Machete.Web.Resources.WorkOrders.tabprefix + wo.getTabLabel(), EID = Convert.ToString(wo.EmployerID), WOID = System.String.Format("{0,5:D5}", wo.paperOrderNum), // Note: paperOrderNum defaults to the value of the WO when a paperOrderNum is not provided dateTimeofWork = wo.dateTimeofWork.ToString(), status = lcache.textByID(wo.status, CI.TwoLetterISOLanguageName), WAcount = wo.workAssignments.Count(a => a.workOrderID == ID).ToString(), contactName = wo.contactName, workSiteAddress1 = wo.workSiteAddress1, zipcode = wo.zipcode, transportMethod = lcache.textByID(wo.transportMethodID, CI.TwoLetterISOLanguageName), displayState = _getDisplayState(wo), // State is used to provide color highlighting to records based on state onlineSource = wo.onlineSource ? Shared.True : Shared.False, workers = showWorkers ? // Workers is only loaded when showWorkers parameter set to TRUE from w in wo.workAssignments select new { WID = w.workerAssigned != null ? (int?)w.workerAssigned.dwccardnum : null, name = w.workerAssigned != null ? w.workerAssigned.Person.firstname1 : null, // Note: hirers should only have access to the workers first name skill = lcache.textByID(w.skillID, CI.TwoLetterISOLanguageName), hours = w.hours, wage = w.hourlyWage } : null }; }
public ActionResult Create(WorkOrder wo, string userName, List<WorkerRequest> workerRequestList) { UpdateModel(wo); WorkOrder neworder = woServ.Create(wo, userName); // New Worker Requests to add foreach (var workerRequest in workerRequestList) { workerRequest.workOrder = neworder; workerRequest.workerRequested = wServ.Get(workerRequest.WorkerID); workerRequest.updatedby(userName); workerRequest.createdby(userName); neworder.workerRequests.Add(workerRequest); } woServ.Save(neworder, userName); // JSON object with new work order data return Json(new { sNewRef = neworder.getTabRef(), sNewLabel = Machete.Web.Resources.WorkOrders.tabprefix + neworder.getTabLabel(), iNewID = neworder.ID }, JsonRequestBehavior.AllowGet); }
/// <summary> /// Returns Work Order object - presented on the WorkOrder Details tab /// </summary> /// <param name="wo">WorkOrder</param> /// <param name="showWorkers">bool flag determining whether the workers associated with the WorkOrder should be retrieved</param> /// <returns>Work Order </returns> public object dtResponse( WorkOrder wo, bool showWorkers) { int ID = wo.ID; return new { tabref = wo.getTabRef(), tablabel = Machete.Web.Resources.WorkOrders.tabprefix + wo.getTabLabel(), EID = Convert.ToString(wo.EmployerID), // Note: Employer ID appears to be unused WOID = System.String.Format("{0,5:D5}", wo.paperOrderNum), // TODO: investigate why PaperOrderNum is used - shouldn't this be the Order # from the WO Table? dateTimeofWork = wo.dateTimeofWork.ToString(), status = lcache.textByID(wo.status, CI.TwoLetterISOLanguageName), WAcount = wo.workAssignments.Count(a => a.workOrderID == ID).ToString(), contactName = wo.contactName, workSiteAddress1 = wo.workSiteAddress1, zipcode = wo.zipcode, dateupdated = System.String.Format("{0:MM/dd/yyyy HH:mm:ss}", wo.dateupdated), // Note: Date Updated appears to be unused updatedby = wo.Updatedby, transportMethod = lcache.textByID(wo.transportMethodID, CI.TwoLetterISOLanguageName), // Note: Transport Method appears to be unused displayState = _getDisplayState(wo), // Note: Display State appears to be unused onlineSource = wo.onlineSource ? Shared.True : Shared.False, emailSentCount = wo.Emails.Where(e => e.statusID == Email.iSent || e.statusID == Email.iReadyToSend).Count(), emailErrorCount = wo.Emails.Where(e => e.statusID == Email.iTransmitError).Count(), recordid = wo.ID.ToString(), // Note: Work Order ID appears not to be used workers = showWorkers ? // Note: Workers appears to not be used from w in wo.workAssignments select new { WID = w.workerAssigned != null ? (int?)w.workerAssigned.dwccardnum : null, name = w.workerAssigned != null ? w.workerAssigned.Person.fullName() : null, skill = lcache.textByID(w.skillID, CI.TwoLetterISOLanguageName), hours = w.hours, wage = w.hourlyWage } : null }; }
public void WorkOrderController_create_post_invalid_throws_exception() { //Arrange var workOrder = new WorkOrder(); _serv.Setup(p => p.Create(workOrder, "UnitTest")).Returns(workOrder); fakeform.Remove("contactName"); _ctrlr.ValueProvider = fakeform.ToValueProvider(); //Act _ctrlr.Create(workOrder, "UnitTest", workerRequest); //Assert }