private ServiceConnectionViewModel GenerateServiceConnectionVM(IEnumerable <UserChannel> userChannels) { //get channels' Ids var channelMagento = userChannels.SingleOrDefault(channel => channel.ChannelType == Shared.Enums.ChannelType.Magento); var channelEbay = userChannels.SingleOrDefault(channel => channel.ChannelType == Shared.Enums.ChannelType.Ebay); var channelEmail = userChannels.SingleOrDefault(channel => channel.ChannelType == Shared.Enums.ChannelType.Email); //assign channels into viewmodel ServiceConnectionViewModel model = new ServiceConnectionViewModel(); if (channelMagento != null) { model.channelMagento = mapper.Map <ChannelMagentoViewModel>( channelMagentoService.GetChannel(channelMagento.ChannelId) ); model.channelMagento.IsConnected = magentoService.IsConnected(model.channelMagento.Host, model.channelMagento.Username, model.channelMagento.Password); } if (channelEbay != null) { model.channelEbay = mapper.Map <ChannelEbayViewModel>( channelEbayService.GetChannel(channelEbay.ChannelId) ); var validateToken = ebayService.IsValidToken(model.channelEbay.Token); if (!validateToken.HasError && validateToken.Result) { model.channelEbay.IsConnected = true; } } if (channelEmail != null) { var channelEmailModel = channelEmailService.GetChannel(channelEmail.ChannelId); model.channelEmail = mapper.Map <ChannelEmailViewModel>(channelEmailModel); var token = mapper.Map <SmartHub.Channels.Gmail.Models.Token>(channelEmailModel); model.channelEmail.IsConnected = gmailService.IsConnected(token); } return(model); }
public void Proceed(Services.Models.Connection connection) { TextBuffer.WriteLine("EmailMagentoProcessor - Start"); TextBuffer.WriteLine("EmailMagentoProcessor - Proceed Connection " + connection.Id); var syncTime = DateTime.UtcNow; connection.Status = ConnectionStatus.Synchronizing; connectionService.Update(connection); var userChannelEmail = userChannelService.GetUserChannel(connection.UserChannelSource); var userChannelMagento = userChannelService.GetUserChannel(connection.UserChannelTarget); var channelEmail = channelEmailService.GetChannel(userChannelEmail.ChannelId); var channelMagento = channelMagentoService.GetChannel(userChannelMagento.ChannelId); var channelMagento_TimeZoneOffset = TimeZoneInfo.GetSystemTimeZones() .FirstOrDefault(x => x.DisplayName == channelMagento.TimeZoneDisplayName) .BaseUtcOffset; var emailTokenResponse = emailService.RefreshToken(channelEmail.RefreshToken); if (emailTokenResponse.HasError) { connection.Status = ConnectionStatus.Error; connection.Message = "Invalid Email Token"; connection.LastSyncedDate = syncTime; connection.NextSyncedDate = connection.LastSyncedDate.Value.AddMinutes(emailMagentoTaskIntervalInMinutes); connection.Counter++; connectionService.Update(connection); return; } var magentoTokenCall = magentoService.GetToken(channelMagento.Host, channelMagento.Username, channelMagento.Password); if (magentoTokenCall.HasError) { connection.Status = ConnectionStatus.Error; connection.Message = "Invalid Magento Token"; connection.LastSyncedDate = syncTime; connection.NextSyncedDate = connection.LastSyncedDate.Value.AddMinutes(emailMagentoTaskIntervalInMinutes); connection.Counter++; connectionService.Update(connection); return; } var magentoToken = magentoTokenCall.Result; #region Email to Magento //1. Pull Email and persist to local db #region Pull Email from Gmail var lastSyncedDate = channelEmail.LastSyncedDate ?? DateTime.UtcNow; var emailMessagesResponse = emailService.GetMessages(emailTokenResponse.Result, lastSyncedDate, DateTime.UtcNow); if (emailMessagesResponse.HasError) { channelEmail.Message += emailMessagesResponse.Error; } else { var emailMessages = emailMessagesResponse.Result; foreach (var emailMessage in emailMessages) { } } #endregion #endregion connection.Status = ConnectionStatus.Connected; connection.LastSyncedDate = syncTime; connection.NextSyncedDate = connection.LastSyncedDate.Value.AddMinutes(emailMagentoTaskIntervalInMinutes); connection.Counter++; connectionService.Update(connection); TextBuffer.WriteLine("EmailMagentoProcessor - End Connection " + connection.Id); }