public async Task <ActionResult> UpdateTransitForwardingOrder([FromBody] TransitForwardingOrder transitForwardingOrder, [FromRoute] int id) { var updateTransitForwardingOrderResult = await transitForwardingOrderService.UpdateTransitForwardingOrder(transitForwardingOrder, id); if (!updateTransitForwardingOrderResult.IsSuccessful) { return(BadRequest(updateTransitForwardingOrderResult)); } return(Ok(updateTransitForwardingOrderResult)); }
public async Task <ActionResult> AddTransitForwardingOrder([FromBody] TransitForwardingOrder transitForwardingOrder) { var addTransitForwardingOrderResult = await transitForwardingOrderService.AddTransitForwardingOrder(transitForwardingOrder); if (!addTransitForwardingOrderResult.IsSuccessful) { return(BadRequest(addTransitForwardingOrderResult)); } return(Ok(addTransitForwardingOrderResult)); }
public async Task <GenericResponse> UpdateTransitForwardingOrder(TransitForwardingOrder transitForwardingOrder, int id) { if (transitForwardingOrder == null) { return(new GenericResponse(false, "Transit - forwarding order relation has not been provided.")); } var transitForwardingOrderToUpdate = await unitOfWork.TransitForwardingOrderRepository.GetTransitForwardingOrderByIdAsync(id); if (transitForwardingOrderToUpdate == null) { return(new GenericResponse(false, $"Transit - forwarding order relation with id={id} does not exist.")); } /* * if (transitForwardingOrder.TransitId == transitForwardingOrderToUpdate.TransitId && transitForwardingOrder.ForwardingOrderId == transitForwardingOrderToUpdate.ForwardingOrderId) * return new GenericResponse(false, "No new changes has been provided."); */ var transitForwardingOrderAlreadyInDatabase = await unitOfWork.TransitForwardingOrderRepository.GetTransitForwardingOrderByTransitAndForwardingOrderAsync(transitForwardingOrder.TransitId, transitForwardingOrder.ForwardingOrderId); if (transitForwardingOrderAlreadyInDatabase != null) { return(new GenericResponse(false, "Transit - forwarding order relation already exists in database.")); } transitForwardingOrderToUpdate.ForwardingOrderId = transitForwardingOrder.ForwardingOrderId; transitForwardingOrderToUpdate.TransitId = transitForwardingOrder.TransitId; try { await unitOfWork.TransitForwardingOrderRepository.AddTransitForwardingOrderAsync(transitForwardingOrderToUpdate); } catch (DbUpdateConcurrencyException ex) { return(new GenericResponse(false, ex.InnerException.Message)); } catch (DbUpdateException ex) { return(new GenericResponse(false, ex.InnerException.Message)); } return(new GenericResponse(true, "Transit - forwarding order relation has been updated.")); }
public async Task <GenericResponse> AddTransitForwardingOrder(TransitForwardingOrder transitForwardingOrder) { if (transitForwardingOrder == null) { return(new GenericResponse(false, "Transit forwarding order relation data has not been provided.")); } try { await unitOfWork.TransitForwardingOrderRepository.AddTransitForwardingOrderAsync(transitForwardingOrder); } catch (DbUpdateConcurrencyException ex) { return(new GenericResponse(false, ex.InnerException.Message)); } catch (DbUpdateException ex) { return(new GenericResponse(false, ex.InnerException.Message)); } return(new GenericResponse(true, "Transit - forwarding order relation has been added.")); }
public async Task <GenericResponse> UpdateTransits(TransitDto transits, int forwardingOrderId) { if (transits == null || transits.Transits == null) { return(new GenericResponse(false, "Dane przejazdów nie zostały podane")); } // get old transits from transitForwardingOrders table var oldTransitForwardingOrders = await unitOfWork.TransitForwardingOrderRepository.GetTransitForwardingOrdersByForwardingOrderAsync(forwardingOrderId); var oldTransits = new List <Transit>(); foreach (var oldTransitForwardingOrder in oldTransitForwardingOrders) { var oldTransit = await unitOfWork.TransitRepository.GetTransitByIdAsync(oldTransitForwardingOrder.TransitId); if (oldTransit == null) { continue; } oldTransits.Add(oldTransit); } // create new list of transits to add or update var transitsToAddOrUpdate = new List <Transit>(); // create new list of transitForwardingOders to add or update var transitForwardingOrdersToAddOrUpdate = new List <TransitForwardingOrder>(); foreach (var _transit in transits.Transits) { var transitToUpdate = await unitOfWork.TransitRepository.GetTransitByIdAsync(_transit.Id); if (transitToUpdate == null) { transitsToAddOrUpdate.Add(_transit); continue; } #region Transit data update transitToUpdate.GrossPrice = _transit.GrossPrice; transitToUpdate.NetPrice = _transit.NetPrice; transitToUpdate.TransportDistance = _transit.TransportDistance; transitToUpdate.PaymentFormId = _transit.PaymentFormId; transitToUpdate.DriverId = _transit.DriverId; transitToUpdate.StartDate = _transit.StartDate; transitToUpdate.EndDate = _transit.EndDate; transitToUpdate.TransporterId = _transit.TransporterId; transitToUpdate.VehicleId = _transit.VehicleId; transitToUpdate.RouteShortPath = _transit.RouteShortPath; transitToUpdate.TransitDestinationCity = _transit.TransitDestinationCity; transitToUpdate.TransitDestinationCountry = _transit.TransitDestinationCountry; transitToUpdate.TransitDestinationStreetAddress = _transit.TransitDestinationStreetAddress; transitToUpdate.TransitDestinationZipCode = _transit.TransitDestinationZipCode; transitToUpdate.TransitSourceCity = _transit.TransitSourceCity; transitToUpdate.TransitSourceCountry = _transit.TransitSourceCountry; transitToUpdate.TransitSourceStreetAddress = _transit.TransitSourceStreetAddress; transitToUpdate.TransitSourceZipCode = _transit.TransitSourceZipCode; transitsToAddOrUpdate.Add(transitToUpdate); #endregion } // catch removed transits from given forwarding order foreach (var oldTransit in oldTransits) { var transitToDelete = transitsToAddOrUpdate.FirstOrDefault(x => x.Id.Equals(oldTransit.Id)); if (transitToDelete == null) { // get all transit forwarding order by transit id to check, if there are other forwarding orders that use this transit var transitsForwardingOrderToDeleteByTransitId = await unitOfWork.TransitForwardingOrderRepository.GetTransitForwardingOrdersByTransitAsync(oldTransit.Id); if (transitsForwardingOrderToDeleteByTransitId == null || transitsForwardingOrderToDeleteByTransitId.Count() == 0) { continue; } try { var _transitForwardinOrderToDelete = transitsForwardingOrderToDeleteByTransitId.FirstOrDefault(x => x.ForwardingOrderId.Equals(forwardingOrderId)); await unitOfWork.TransitForwardingOrderRepository.RemoveTransitForwardingOrder(_transitForwardinOrderToDelete); } catch (DbUpdateConcurrencyException ex) { return(new GenericResponse(false, ex.InnerException.Message)); } catch (DbUpdateException ex) { return(new GenericResponse(false, ex.InnerException.Message)); } // filter those which are not related to given forwarding order var transitsForwardingOrderToDelete = transitsForwardingOrderToDeleteByTransitId.Where(x => x.ForwardingOrderId != forwardingOrderId); if (transitsForwardingOrderToDelete.Count() == 0) { // delete also transit from transits table try { await unitOfWork.TransitRepository.RemoveTransit(oldTransit); } catch (DbUpdateConcurrencyException ex) { return(new GenericResponse(false, ex.InnerException.Message)); } catch (DbUpdateException ex) { return(new GenericResponse(false, ex.InnerException.Message)); } continue; } } } try { await unitOfWork.TransitRepository.UpdateTransits(transitsToAddOrUpdate); foreach (var _transit in transits.Transits) { var transitForwardingOrderToUpdate = await unitOfWork.TransitForwardingOrderRepository.GetTransitForwardingOrderByTransitAndForwardingOrderAsync(_transit.Id, forwardingOrderId); if (transitForwardingOrderToUpdate == null) { var newTransitForwardingOrder = new TransitForwardingOrder() { TransitId = _transit.Id, ForwardingOrderId = forwardingOrderId }; transitForwardingOrdersToAddOrUpdate.Add(newTransitForwardingOrder); } } await unitOfWork.TransitForwardingOrderRepository.UpdateTransitForwardingOrders(transitForwardingOrdersToAddOrUpdate); } catch (DbUpdateConcurrencyException ex) { return(new GenericResponse(false, ex.InnerException.Message)); } catch (DbUpdateException ex) { return(new GenericResponse(false, ex.InnerException.Message)); } return(new GenericResponse(true, "Transit has been updated.")); }
public async Task RemoveTransitForwardingOrder(TransitForwardingOrder transitForwardingOrder) { context.TransitForwardingOrders.Remove(transitForwardingOrder); await context.SaveChangesAsync(); }
public async Task AddTransitForwardingOrderAsync(TransitForwardingOrder transitForwardingOrder) { await context.TransitForwardingOrders.AddAsync(transitForwardingOrder); await context.SaveChangesAsync(); }