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));
        }
Exemple #3
0
        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
            }));
        }
Exemple #5
0
        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);
 }
Exemple #13
0
        /// <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;
        }
Exemple #14
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 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);
        }
Exemple #19
0
        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");
 }