protected override async Task Execute(IServiceProvider serviceProvider, ImportReservationsFromPoolingProperties props, CancellationToken cancellationToken) { try { ICommonDataService dataService = serviceProvider.GetService <ICommonDataService>(); using (PoolingIntegration poolingIntegration = new PoolingIntegration( new User { PoolingLogin = "******", PoolingPassword = "******" }, dataService, serviceProvider )) { var startDate = DateTime.Now.AddDays(-14); var endDate = DateTime.Now.AddDays(14); // var startDate = endDate - (CrontabSchedule.Parse(Schedule).GetNextOccurrence(endDate) - endDate); poolingIntegration.LoadShippingsAndOrdersFromReports(startDate, endDate); } } catch (Exception ex) { Log.Error(ex, $"Ошибка при обработке {TaskName} инжекции."); throw ex; } }
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 ValidateResult Save(SaveProfileDto dto) { var currentUserId = _userProvider.GetCurrentUserId(); var user = _dataService.GetDbSet <User>().GetById(currentUserId.Value); var lang = _userProvider.GetCurrentUser().Language; var result = _validationService.Validate(dto); if (string.IsNullOrEmpty(dto.Email)) { result.AddError(nameof(dto.Email), "userEmailIsEmpty".Translate(lang), ValidationErrorType.ValueIsRequired); } if (!string.IsNullOrEmpty(dto.Email) && !IsValidEmail(dto.Email)) { result.AddError(nameof(dto.Email), "userEmailIsInvalid".Translate(lang), ValidationErrorType.InvalidValueFormat); } if (_dataService.GetDbSet <User>().Any(x => x.Email == dto.Email && x.Id != user.Id)) { result.AddError(nameof(dto.Email), "User.DuplicatedRecord".Translate(lang), ValidationErrorType.DuplicatedRecord); } if (string.IsNullOrEmpty(dto.UserName)) { result.AddError(nameof(dto.UserName), "userNameIsEmpty".Translate(lang), ValidationErrorType.ValueIsRequired); } if (result.IsError) { return(result); } user.Email = dto.Email; user.Name = dto.UserName; if (user.PoolingLogin != dto.PoolingLogin || user.PoolingPassword != dto.PoolingPassword) { user.PoolingLogin = dto.PoolingLogin; user.PoolingPassword = dto.PoolingPassword; if (!string.IsNullOrEmpty(dto.PoolingLogin) && !string.IsNullOrEmpty(dto.PoolingPassword)) { using (var pooling = new PoolingIntegration(user, _dataService, _serviceProvider)) pooling.Init(); } } user.FmCPLogin = dto.FmCPLogin; user.FmCPPassword = dto.FmCPPassword; _dataService.SaveChanges(); return(result); }
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) }); }