private async Task <bool> ImportDriverDuties(XmlDocument doc, List <ImportedWorkBlockDTO> importedWorkBlocks) { string xmlns = doc.DocumentElement.Attributes["xmlns"].Value; XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("file", xmlns); XmlNodeList driverDuties = doc.GetElementsByTagName("DriverDuty"); foreach (XmlNode driverDuty in driverDuties) { List <string> workBlockIDs = new List <string>(); XmlNodeList workBlockRefs = driverDuty.FirstChild.ChildNodes; foreach (XmlNode workBlockRef in workBlockRefs) { string keyString = workBlockRef.Attributes["key"].Value; ImportedWorkBlockDTO importedWorkBlockDTO = getImportedWorkBlockDTOFromKey(importedWorkBlocks, keyString); if (importedWorkBlockDTO != null) { workBlockIDs.Add(importedWorkBlockDTO.workBlockDTO.Id.ToString()); } } string code = driverDuty.Attributes["Name"].Value; var creatingDriverDutyDTO = new CreatingDriverDutyDTO(code, workBlockIDs); var createdDD = await this._driverDutyService.AddDriverDuty(creatingDriverDutyDTO); } return(true); }
public async Task <DriverDutyDTO> AddDriverDuty(CreatingDriverDutyDTO driverDutyDTO) { List <WorkBlock> workBlocks = new List <WorkBlock>(); List <WorkBlock> workBlocksAux = new List <WorkBlock>(); foreach (var workBlockId in driverDutyDTO.listWorkBlocks) { var workBlock = await _workBlockRepository.GetByIdAsync(new WorkBlockID(workBlockId)); workBlocks.Add(workBlock); workBlocksAux.Add(workBlock); } for (int i = 1; i < workBlocks.Count; i++) { var firstVehicleDutyId = await this._repoVehicleDutyRepository.getVehicleDutyByWorkblock(workBlocks[i]); var secondVehicleDutyId = await this._repoVehicleDutyRepository.getVehicleDutyByWorkblock(workBlocks[i - 1]); if (!firstVehicleDutyId.Id.Equals(secondVehicleDutyId.Id)) { if (workBlocks[i - 1].tripList.Count > 0 && workBlocks[i].tripList.Count > 0) { var lastNodeOfLastWorkblok = workBlocks[i - 1].tripList.Last().nodePassageList.Last().nodeID.id; var firstNodeOfActualWorkblock = workBlocks[i].tripList.First().nodePassageList.First().nodeID.id; // if (lastNodeOfLastWorkblok.Equals(firstNodeOfActualWorkblock)) // { NodeDTO firstNode = await HttpRequest <NodeDTO> .GetByID("http://localhost:8080/api/node/" + firstNodeOfActualWorkblock); if (!firstNode.isReliefPoint) { throw new BusinessRuleValidationException(firstNode.code + " invalid: this node is not a relief point."); } // } // else // { // throw new BusinessRuleValidationException("When two workblocks have a diferent vehicleDuty the last node of the last workblock must be the same as the first of actual workblock"); // } } } } var driverDuty = new DriverDuty( driverDutyDTO.driverDutyCode, workBlocks ); var savedDriverDuty = await this._driverDutyRepository.AddAsync(driverDuty); await this._unitOfWork.CommitAsync(); return(this._driverDutyMapper.DomainToDTO(savedDriverDuty)); }
public async Task <ActionResult <DriverDutyDTO> > Create(CreatingDriverDutyDTO driverDutyDTO) { try { var driverDuty = await driverDutyService.AddDriverDuty(driverDutyDTO); return(CreatedAtAction( nameof(GetById), new { id = driverDuty.Id }, driverDuty )); } catch (BusinessRuleValidationException ex) { return(BadRequest(new { Message = ex.Message })); } }
public async void AddDriverDuty() { var repo = new Mock <IDriverDutyRepository>(); var repoWorkBlocks = new Mock <IWorkBlockRepository>(); var repoVehicleDutyRepository = new Mock <IVehicleDutyRepository>(); var uow = new Mock <IUnitOfWork>(); string driverDutyCode = "dDutycode1"; var tripList = new List <Trip>(); string lineID = "Line:1"; string pathID = "Path:1"; string tripDepartureTime = "20:12:10"; var trip = new Trip(lineID, pathID, tripDepartureTime); tripList.Add(trip); var workBlock1 = new WorkBlock("9:0:0", "10:0:0", tripList); var workBlock2 = new WorkBlock("10:0:0", "13:0:0", tripList); var workBlock3 = new WorkBlock("14:0:0", "18:0:0", tripList); var workBlockList = new List <WorkBlock> { workBlock1, workBlock2, workBlock3 }; var driverDuty = new DriverDuty(driverDutyCode, workBlockList); var tripDTO = new TripDTO(trip.Id.AsGuid(), new LineId(lineID), new PathId(pathID), tripDepartureTime); var tripsDTO = new List <TripDTO>() { tripDTO }; var tripsDTOString = new List <string>() { trip.Id.ToString() }; var cworkBlockDTO1 = new CreatingWorkBlockDTO(tripsDTOString, workBlock1.startingTime.time, workBlock1.endingTime.time); var cworkBlockDTO2 = new CreatingWorkBlockDTO(tripsDTOString, workBlock2.startingTime.time, workBlock2.endingTime.time); var cworkBlockDTO3 = new CreatingWorkBlockDTO(tripsDTOString, workBlock3.startingTime.time, workBlock3.endingTime.time); var listWorkBlocksString = new List <String>() { workBlock1.Id.Value, workBlock2.Id.Value, workBlock3.Id.Value }; var workBlockDTO1 = new WorkBlockDTO(workBlock1.Id.AsGuid(), workBlock1.startingTime.time, workBlock1.endingTime.time, tripsDTO); var workBlockDTO2 = new WorkBlockDTO(workBlock2.Id.AsGuid(), workBlock2.startingTime.time, workBlock2.endingTime.time, tripsDTO); var workBlockDTO3 = new WorkBlockDTO(workBlock3.Id.AsGuid(), workBlock3.startingTime.time, workBlock3.endingTime.time, tripsDTO); var listWorkBlockDTO = new List <WorkBlockDTO>() { workBlockDTO1, workBlockDTO2, workBlockDTO3 }; var driverDutyDTO = new DriverDutyDTO(driverDuty.Id.AsGuid(), driverDutyCode, listWorkBlockDTO); var creatingDriverDutyDTO = new CreatingDriverDutyDTO(driverDutyCode, listWorkBlocksString); var workBlockID1 = new WorkBlockID(workBlockDTO1.Id); var workBlockID2 = new WorkBlockID(workBlockDTO2.Id); var workBlockID3 = new WorkBlockID(workBlockDTO3.Id); string vehicleDutyCode = "code:1"; string registration = "AA11AA"; string vin = "123456789AAAAAAAA"; string entranceDate = "27/01/1978"; string vehicleType = "vehicleType1"; Vehicle vehicle = new Vehicle(registration, vin, entranceDate, vehicleType); VehicleDuty vehicleDuty = new VehicleDuty(vehicleDutyCode, tripList); repoWorkBlocks.Setup(_ => _.GetByIdAsync(workBlockID1)).ReturnsAsync(workBlock1); repoWorkBlocks.Setup(_ => _.GetByIdAsync(workBlockID2)).ReturnsAsync(workBlock2); repoWorkBlocks.Setup(_ => _.GetByIdAsync(workBlockID3)).ReturnsAsync(workBlock3); repoVehicleDutyRepository.Setup(_ => _.getVehicleDutyByWorkblock(workBlock1)).ReturnsAsync(vehicleDuty); repoVehicleDutyRepository.Setup(_ => _.getVehicleDutyByWorkblock(workBlock2)).ReturnsAsync(vehicleDuty); repoVehicleDutyRepository.Setup(_ => _.getVehicleDutyByWorkblock(workBlock3)).ReturnsAsync(vehicleDuty); repo.Setup(_ => _.AddAsync(driverDuty)).ReturnsAsync(driverDuty); var service = new DriverDutyService(repo.Object, repoWorkBlocks.Object, repoVehicleDutyRepository.Object, uow.Object); var actual = await service.AddDriverDuty(creatingDriverDutyDTO); Assert.Equal(driverDutyDTO, actual); }
public async void Create() { var service = new Mock <IDriverDutyService>(); string driverDutyCode = "dDutycode1"; var tripList = new List <Trip>(); string lineID = "Line:1"; string pathID = "Path:1"; string tripDepartureTime = "20:12:10"; var trip = new Trip(lineID, pathID, tripDepartureTime); tripList.Add(trip); var workBlock1 = new WorkBlock("9:0:0", "10:0:0", tripList); var workBlock2 = new WorkBlock("10:0:0", "13:0:0", tripList); var workBlock3 = new WorkBlock("14:0:0", "18:0:0", tripList); var workBlockList = new List <WorkBlock> { workBlock1, workBlock2, workBlock3 }; var driverDuty = new DriverDuty(driverDutyCode, workBlockList); var tripDTO = new TripDTO(trip.Id.AsGuid(), new LineId(lineID), new PathId(pathID), tripDepartureTime); var tripsDTO = new List <TripDTO>() { tripDTO }; var tripsDTOString = new List <string>() { trip.Id.ToString() }; var cworkBlockDTO1 = new CreatingWorkBlockDTO(tripsDTOString, workBlock1.startingTime.time, workBlock1.endingTime.time); var cworkBlockDTO2 = new CreatingWorkBlockDTO(tripsDTOString, workBlock2.startingTime.time, workBlock2.endingTime.time); var cworkBlockDTO3 = new CreatingWorkBlockDTO(tripsDTOString, workBlock3.startingTime.time, workBlock3.endingTime.time); var listWorkBlocksString = new List <String>() { workBlock1.Id.Value, workBlock2.Id.Value, workBlock3.Id.Value }; var workBlockDTO1 = new WorkBlockDTO(workBlock1.Id.AsGuid(), workBlock1.startingTime.time, workBlock1.endingTime.time, tripsDTO); var workBlockDTO2 = new WorkBlockDTO(workBlock2.Id.AsGuid(), workBlock2.startingTime.time, workBlock2.endingTime.time, tripsDTO); var workBlockDTO3 = new WorkBlockDTO(workBlock3.Id.AsGuid(), workBlock3.startingTime.time, workBlock3.endingTime.time, tripsDTO); var listWorkBlockDTO = new List <WorkBlockDTO>() { workBlockDTO1, workBlockDTO2, workBlockDTO3 }; var driverDutyDTO = new DriverDutyDTO(driverDuty.Id.AsGuid(), driverDutyCode, listWorkBlockDTO); var creatingDriverDutyDTO = new CreatingDriverDutyDTO(driverDutyCode, listWorkBlocksString); service.Setup(_ => _.AddDriverDuty(creatingDriverDutyDTO)).ReturnsAsync(driverDutyDTO); var controller = new DriverDutyController(service.Object); var actual = await controller.Create(creatingDriverDutyDTO); Assert.NotNull(actual); Assert.NotNull(actual.Result); }