public async Task <ActionResult> Create(WorkAssignment assignment, string userName) { ModelState.ThrowIfInvalid(); var modelIsValid = await _adaptor.TryUpdateModelAsync(this, assignment); if (modelIsValid) { assignment.workOrder = woServ.Get(assignment.workOrderID); var newAssignment = waServ.Create(assignment, userName); var result = map.Map <WorkAssignment, ViewModel.WorkAssignmentMVC>(newAssignment); return(Json(new { sNewRef = result.tabref, sNewLabel = result.tablabel, iNewID = result.ID })); } else { return(Json(new { jobSuccess = false, rtnMessage = $"{ModelState.GetErrorMessageIfInvalid()}" })); } }
public ActionResult Edit(int id) { WorkAssignment wa = waServ.Get(id); var m = map.Map <WorkAssignment, ViewModel.WorkAssignment>(wa); m.def = _defaults; return(PartialView("Edit", m)); }
public ActionResult Edit(int id, int?workerAssignedID, string userName) { WorkAssignment asmt = waServ.Get(id); //Update from HTML attributes UpdateModel(asmt); waServ.Save(asmt, workerAssignedID, userName); return(Json(new { jobSuccess = true })); }
public ActionResult Assign(int waid, int wsiid, string userName) { WorkerSignin signin = wsiServ.Get(wsiid); WorkAssignment assignment = waServ.Get(waid); waServ.Assign(assignment, signin, userName); return(Json(new { jobSuccess = true })); }
public ActionResult Create(WorkAssignment assignment, string userName) { UpdateModel(assignment); assignment.workOrder = woServ.Get(assignment.workOrderID); var newAssignment = waServ.Create(assignment, userName); var result = map.Map <WorkAssignment, ViewModel.WorkAssignment>(newAssignment); return(Json(new { sNewRef = result.tabref, sNewLabel = result.tablabel, iNewID = result.ID })); }
public ActionResult Duplicate(int id, string userName) { // TODO: Move duplication functionality to the service layer WorkAssignment _assignment = waServ.Get(id); WorkAssignment duplicate = (WorkAssignment)_assignment.Clone(); duplicate.ID = 0; duplicate.workerAssigned = null; duplicate.workerAssignedID = null; duplicate.workerSiginin = null; duplicate.workerSigninID = null; var saved = waServ.Create(duplicate, userName); var result = map.Map <WorkAssignment, ViewModel.WorkAssignment>(saved); return(Json(new { sNewRef = result.tabref, sNewLabel = result.tablabel, iNewID = result.ID })); }
// // _getTabLabel // private string _getTabLabel(WorkAssignment wa) { return Machete.Web.Resources.WorkAssignments.tabprefix + wa.getFullPseudoID(); }
// // _getTabRef // private string _getTabRef(WorkAssignment wa) { return "/WorkAssignment/Edit/" + Convert.ToString(wa.ID); }
public ActionResult Create(WorkAssignment assignment, string userName) { UpdateModel(assignment); assignment.workOrder = woServ.Get(assignment.workOrderID); assignment.incrPseudoID(); //assignment.workOrder.waPseudoIDCounter++; //assignment.pseudoID = assignment.workOrder.waPseudoIDCounter; WorkAssignment newAssignment = waServ.Create(assignment, userName); return Json(new { sNewRef = _getTabRef(newAssignment), sNewLabel = _getTabLabel(newAssignment), iNewID = newAssignment.ID }, JsonRequestBehavior.AllowGet); }
// // _getStatus private string _getStatus(WorkAssignment asmt) { if (asmt.workerAssignedID > 0 && asmt.workerSigninID > 0) // green return "completed"; if (asmt.workerAssignedID == null && asmt.workOrder.status == WorkOrder.iCompleted) return "incomplete"; if (asmt.workerAssignedID > 0 && asmt.workerSigninID == null && asmt.workOrder.status == WorkOrder.iCompleted) return "orphaned"; if (asmt.workOrder.status == WorkOrder.iCancelled) return "cancelled"; if (asmt.workOrder.status == WorkOrder.iActive) // blue return "active"; return null; }
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); } }
public ActionResult Create(int WorkOrderID, string _description) { WorkAssignment _assignment = new WorkAssignment(); _assignment.active = true; _assignment.workOrderID = WorkOrderID; _assignment.skillID = Lookups.getDefaultID(LCategory.skill); _assignment.hours = Lookups.hoursDefault; _assignment.days = Lookups.daysDefault; _assignment.hourlyWage = Lookups.hourlyWageDefault; _assignment.description = _description; return PartialView(_assignment); }
/// <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> /// 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 void Unit_WA_Controller_edit_get_returns_workAssignment() { //Arrange int testid = 4242; var fakeworkAssignment = new WorkAssignment(); fakeworkAssignment.ID = 4243; _waServ.Setup(p => p.Get(testid)).Returns(() => fakeworkAssignment); //Act PartialViewResult result = (PartialViewResult)_ctrlr.Edit(testid); //Assert Assert.IsInstanceOfType(result.ViewData.Model, typeof(WorkAssignment)); }
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()); }
public void Unit_WA_Controller_create_post_invalid_throws_exception() { //Arrange WorkAssignment _asmt = new WorkAssignment(); fakeform.Add("hours", "invalid data type"); _waServ.Setup(p => p.Create(_asmt, "UnitTest")).Returns(_asmt); _ctrlr.ValueProvider = fakeform.ToValueProvider(); //Act _ctrlr.Create(_asmt, "UnitTest"); //Assert }
public void DeleteWorkAssignment() { // //Arrange string user = "******"; int id = 1; var _wa = (WorkAssignment)Records.assignment.Clone(); WorkAssignment dp = new WorkAssignment(); waRepo.Setup(r => r.Delete(It.IsAny<WorkAssignment>())).Callback((WorkAssignment p) => { dp = p; }); waRepo.Setup(r => r.GetById(id)).Returns(_wa); // //Act waServ.Delete(id, user); // //Assert Assert.AreEqual(dp, _wa); }
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 void Unit_WA_Controller_edit_post_invalid_throws_exception() { //Arrange var asmt = new WorkAssignment(); Worker wkr = new Worker(); wkr.ID = 424; int testid = 4243; asmt.ID = testid; asmt.workerAssignedID = wkr.ID; FormCollection fakeform = new FormCollection(); fakeform.Add("ID", testid.ToString()); fakeform.Add("hours", "blah"); fakeform.Add("comments", "UnitTest"); // // Mock service and setup SaveWorkAssignment mock _waServ.Setup(p => p.Save(asmt, "UnitTest")); _waServ.Setup(p => p.Get(testid)).Returns(asmt); _wkrServ.Setup(p => p.Get((int)asmt.workerAssignedID)).Returns(wkr); // // Mock HttpContext so that ModelState and FormCollection work _ctrlr.ValueProvider = fakeform.ToValueProvider(); // //Act //_ctrlr.ModelState.AddModelError("TestError", "foo"); _ctrlr.Edit(testid, null, "UnitTest"); //Assert }
public void Unit_WA_Controller_edit_post_valid_updates_model_returns_json() { //Arrange int testid = 4242; Worker wkr = new Worker(); wkr.ID = 424; FormCollection fakeform = new FormCollection(); fakeform.Add("ID", testid.ToString()); fakeform.Add("description", "blah"); //Every required field must be populated, fakeform.Add("comments", "UnitTest"); //or result will be null. WorkAssignment asmt = new WorkAssignment(); WorkAssignment savedAsmt = null; asmt.workerAssignedID = wkr.ID; asmt.ID = testid; string user = ""; _waServ.Setup(p => p.Get(testid)).Returns(asmt); _waServ.Setup(x => x.Save(It.IsAny<WorkAssignment>(), It.IsAny<string>()) ).Callback((WorkAssignment p, string str) => { savedAsmt = p; user = str; }); _wkrServ.Setup(p => p.Get((int)asmt.workerAssignedID)).Returns(wkr); _ctrlr.ValueProvider = fakeform.ToValueProvider(); //Act var result = _ctrlr.Edit(testid, null, "UnitTest") as JsonResult; //Assert Assert.IsInstanceOfType(result, typeof(JsonResult)); Assert.AreEqual("{ jobSuccess = True }", result.Data.ToString()); Assert.AreEqual(asmt, savedAsmt); Assert.AreEqual(savedAsmt.description, "blah"); Assert.AreEqual(savedAsmt.comments, "UnitTest"); }