protected void UpdateShippingFromIntegrations(Shipping shipping) { if (shipping.Status == ShippingState.ShippingCreated && shipping.UserCreatorId.HasValue) { if (shipping.CarrierId == null) { shipping.PoolingInfo = "Укажите Транспортную компанию"; return; } if (shipping.TarifficationType == null) { shipping.PoolingInfo = "Укажите Способ тарификации"; return; } var creator = _dataService.GetByIdOrNull <User>(shipping.UserCreatorId); if (creator.IsPoolingIntegrated()) { using (var poolingIntegration = new PoolingIntegration(creator, _dataService)) { var poolingInfo = poolingIntegration.GetInfoFor(shipping); shipping.PoolingState = poolingInfo.IsAvailable ? ShippingPoolingState.PoolingAvailable : (ShippingPoolingState?)null; shipping.PoolingInfo = poolingInfo.MessageField; } } else { shipping.PoolingInfo = PoolingIntegration.NeedLoginPasswordMessage; } } }
public AppActionResult Run(CurrentUserDto userDto, Shipping shipping) { var user = _dataService.GetById <User>(userDto.Id.Value); if (!user.IsPoolingIntegrated()) { return new AppActionResult { IsError = true, Message = "Укажите данные для доступа к pooling.me в настройках профиля" } } ; using (var pooling = new PoolingIntegration(user, _dataService)) { pooling.CancelReservation(shipping); var poolingInfoDto = pooling.GetInfoFor(shipping); shipping.PoolingInfo = poolingInfoDto.MessageField; } shipping.PoolingSlotId = null; shipping.PoolingReservationId = null; shipping.Status = ShippingState.ShippingCreated; shipping.PoolingState = ShippingPoolingState.PoolingAvailable; foreach (var order in _dataService.GetDbSet <Order>().Where(o => o.ShippingId == shipping.Id)) { order.OrderShippingStatus = shipping.Status; } _historyService.Save(shipping.Id, "shippingDeletePoolingSlot", shipping.ShippingNumber); return(new AppActionResult { IsError = false, Message = "shippingDeletePoolingSlot".Translate(userDto.Language, shipping.ShippingNumber) }); }
public AppActionResult Run(CurrentUserDto userDto, Shipping shipping) { var user = _dataService.GetById <User>(userDto.Id.Value); if (!user.IsPoolingIntegrated()) { return new AppActionResult { IsError = true, Message = "Укажите данные для доступа к pooling.me в настройках профиля" } } ; using (var pooling = new PoolingIntegration(user, _dataService)) { var poolingInfo = pooling.GetInfoFor(shipping); if (poolingInfo.IsAvailable) { var reservationResult = pooling.CreateReservation(shipping); if (!string.IsNullOrEmpty(reservationResult.Error)) { return(new AppActionResult { IsError = true, Message = $"Pooling: {reservationResult.Error}" }); } shipping.PoolingInfo = $"Номер брони на Pooling: {reservationResult.ReservationNumber}"; shipping.PoolingSlotId = poolingInfo.SlotId; shipping.PoolingReservationId = reservationResult.ReservationId; } else { shipping.PoolingState = null; return(new AppActionResult { IsError = true, Message = "Бронирование не доступно" }); } } shipping.Status = ShippingState.ShippingConfirmed; shipping.PoolingState = ShippingPoolingState.PoolingBooked; foreach (var order in _dataService.GetDbSet <Order>().Where(o => o.ShippingId == shipping.Id)) { order.OrderShippingStatus = shipping.Status; } _historyService.Save(shipping.Id, "shippingSetPooling", shipping.ShippingNumber); return(new AppActionResult { IsError = false, Message = "shippingSetPooling".Translate(userDto.Language, shipping.ShippingNumber) }); }