public async Task <IReminderResponse> RemoveReminder(int userId, int applicationId, int activityId) { logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } userId : {userId} UserIPAddress: { _userIPAddress.GetUserIP().Result }"); try { var reminderData = await _appDbContext.Reminders.Where(x => x.UserID == userId && x.ActivityId == activityId && x.ApplicationId == applicationId).FirstOrDefaultAsync(); var data = false; if (reminderData != null) { _appDbContext.Reminders.Remove(reminderData); await _appDbContext.SaveChangesAsync(); data = true; } return(new ReminderResponse(data)); } catch (Exception ex) { logger.Error(ex); throw ex; } }
public async Task <IProgramResponse> GetCompletedProgramAsync(int userId) { try { logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } userId: {userId} UserIPAddress: { _userIPAddress.GetUserIP().Result }"); var completedPrograms = await _appDbContext.Applications.Where(k => k.ProfileId == userId && (k.StatusItemId == (int)ApplicationProgressStatus.Accepted || k.StatusItemId == (int)ApplicationProgressStatus.Alumni)).Join( _appDbContext.Batches.Include(m => m.Programme).Include(m => m.Programme.ProgrammeTypeItem), a => a.BatchId, b => b.Id, (a, b) => new CompletedProgramView { BatchNumber = b.Number, BatchYear = b.Year, Program = _mapper.Map <ProgramView>(b.Programme), StatusItemId = a.StatusItemId ?? 0, ProgramTypeLookup = _mapper.Map <LookupItemView>(b.Programme.ProgrammeTypeItem), }).ToListAsync(); return(new ProgramResponse(completedPrograms)); } catch (Exception e) { return(new ProgramResponse(ClientMessageConstant.WeAreUnableToProcessYourRequest, HttpStatusCode.InternalServerError)); } }
public async Task <IActivityAndChallengesResponse> GetActivityCategoryAsync(int profileId) { try { logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } input: {profileId} UserIPAddress: { _userIPAddress.GetUserIP().Result }"); var initiativeCategories = await _appDbContext.InitiativeCategories.Include(k => k.Initiatives).ToListAsync(); var categoriesViewModels = _mapper.Map <List <InitiativeCategoryViewModel> >(initiativeCategories); foreach (var item in categoriesViewModels) { item.Activities = item.Activities.Where(a => a.InitiativeTypeItemId == (int)InitiativeType.EngagementActivities && a.IsActive == true).ToList(); foreach (var item1 in item.Activities.ToList()) { if (item1.FileId != null) { item1.FileName = _appDbContext.Files.FirstOrDefault(k => k.IdGuid == item1.FileId)?.Name ?? ""; } var batch = await _appDbContext.BatchInitiatives.Where(x => x.InitiativeId == item1.Id).ToListAsync(); if (batch.Count() > 0) { var applicationList = new List <Application>(); foreach (var item2 in batch) { var application = await _appDbContext.Applications.Where(x => (x.BatchId == item2.BatchId && x.ProfileId == profileId) && (x.StatusItemId == 59006 || x.StatusItemId == 59009)).FirstOrDefaultAsync(); if (application != null) { applicationList.Add(application); } } if (applicationList.Count == 0) { item.Activities.Remove(item1); } } } } var userActivity = await _appDbContext.InitiativeProfiles.Include(k => k.Initiative).ThenInclude(m => m.QuestionGroup) .Include(m => m.StatusItem).Where(k => k.ProfileId == profileId).ToListAsync(); var userInitiatives = userActivity.Select(k => { var ini = _mapper.Map <InitiativeViewModel>(k.Initiative); if (ini.FileId != null && ini.FileId != new Guid()) { ini.FileName = _appDbContext.Files.FirstOrDefault(k => k.IdGuid == ini.FileId)?.Name ?? ""; } ini.InitiativeStatus = _mapper.Map <LookupItemView>(k.StatusItem); ini.ReferenceNumber = _appDbContext.ParticipationReferences.FirstOrDefault(a => a.Id == k.ParticipationReferenceID)?.ReferenceNumber ?? ""; return(ini); }).ToList(); var allInitiatives = _mapper.Map <List <InitiativeViewModel> >(await _appDbContext.Initiatives.Include(k => k.InitiativeTypeItem).Where(k => k.IsActive == true).ToListAsync()); foreach (var item1 in allInitiatives.ToList()) { if (item1.FileId != null && item1.FileId != new Guid()) { item1.FileName = _appDbContext.Files.FirstOrDefault(k => k.IdGuid == item1.FileId)?.Name ?? ""; } var batch = await _appDbContext.BatchInitiatives.Where(x => x.InitiativeId == item1.Id).ToListAsync(); if (batch.Count() > 0) { var applicationList = new List <Application>(); foreach (var item in batch) { var application = await _appDbContext.Applications.Where(x => (x.BatchId == item.BatchId && x.ProfileId == profileId) && (x.StatusItemId == 59006 || x.StatusItemId == 59009)).FirstOrDefaultAsync(); if (application != null) { applicationList.Add(application); } } if (applicationList.Count == 0) { allInitiatives.Remove(item1); } } } var lookupItemsList = _mapper.Map <List <LookupItemView> >(await _appDbContext.LookupItems.Where(k => k.LookupId == (int)LookupType.InitiativeType) .ToListAsync()); foreach (InitiativeType type in Enum.GetValues(typeof(InitiativeType))) { if (type == InitiativeType.EngagementActivities || type == InitiativeType.MyActivity) { continue;; } var lookUp = lookupItemsList.FirstOrDefault(k => k.Id == (int)type); categoriesViewModels.Add(new InitiativeCategoryViewModel() { Id = (int)type, TitleEn = lookUp?.NameEn, TitleAr = lookUp?.NameAr, Activities = allInitiatives.Where(k => k.InitiativeTypeItemId == (int)type).ToList() }); } categoriesViewModels.ForEach(k => k.Activities.ForEach(m => m.InitiativeStatus = _mapper.Map <LookupItemView>(userActivity.FirstOrDefault(c => c.InitiativeId == m.Id)?.StatusItem))); categoriesViewModels.Insert(0, new InitiativeCategoryViewModel() { Id = (int)InitiativeType.MyActivity, TitleEn = "My Activity", TitleAr = "نشاطي", Activities = userInitiatives }); foreach (var item2 in categoriesViewModels) { foreach (var item3 in item2.Activities) { var reminder = await _appDbContext.Reminders.Where(x => x.UserID == profileId && x.ActivityId == item3.Id && x.ApplicationId == 2).FirstOrDefaultAsync(); item3.isReminderSet = reminder != null ? true : false; } } return(new ActivityAndChallengesResponse(categoriesViewModels)); } catch (Exception e) { logger.Error(e); return(new ActivityAndChallengesResponse(e)); } }
public async Task <IUserRecommendationResponse> SendRecommendationAsync(MultipleUserRecommendationModelView view) { try { logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } input: {view.ToJsonString()} UserIPAddress: { _userIPAddress.GetUserIP().Result }"); var firstName = await _appDbContext.Profiles.Where(k => k.Id == view.SenderUserID).Select(k => k.FirstNameEn).FirstOrDefaultAsync(); var lastName = await _appDbContext.Profiles.Where(k => k.Id == view.SenderUserID).Select(k => k.LastNameEn).FirstOrDefaultAsync(); var userName = firstName + " " + lastName; var notifyText = view.isAskedRecommendation ? userName + " is asked for recommendation" : userName + " has sent to you recommendation"; List <UserRecommendationModelView> UserRecommendViews = new List <UserRecommendationModelView>(); foreach (int RecipientUserID in view.RecipientUserID) { var data = new UserRecommendation() { SenderUserID = view.SenderUserID, RecipientUserID = RecipientUserID, RecommendationText = view.RecommendationText, isAskedRecommendation = view.isAskedRecommendation, isRead = false, Created = DateTime.Now, CreatedBy = userName, Modified = DateTime.Now, ModifiedBy = userName }; await _appDbContext.AddAsync(data); await _appDbContext.SaveChangesAsync(); var userRecommend = _mapper.Map <UserRecommendationModelView>(data); //var deviceIds = await _appDbContext.UserDeviceInfos.Where(k => k.UserId == RecipientUserID).Select(k => k.DeviceId).ToListAsync(); //if (deviceIds.Count > 0) //{ // foreach (var deviceId in deviceIds) // { // logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } Sending recommend push notification to User : {RecipientUserID} and Device ID: {deviceId} "); // await _pushNotificationService.SendRecommendPushNotificationAsync(userRecommend, notifyText, deviceId); // } // logger.Info("Notification sent"); //} var customNotificationData = await _appDbContext.CustomNotifications.Where(x => x.ProfileID == data.RecipientUserID && x.CategoryID == (int)CategoryType.Messages).FirstOrDefaultAsync(); if (customNotificationData?.isEnabled == true || customNotificationData == null) { await AddNotificationAsync(data.RecipientUserID, data.isAskedRecommendation?ActionType.AskRecommendation : ActionType.SendRecommendation, data.ID, ParentType.UserRecommendation, data.SenderUserID, notifyText); } UserRecommendViews.Add(userRecommend); } return(new UserRecommendationResponse(UserRecommendViews)); } catch (Exception ex) { logger.Error(ex); return(new UserRecommendationResponse(ex)); } }
public async Task <IFileResponse> GetProfileImageAsync(int profileId) { try { logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } userId: {profileId} UserIPAddress: { _userIPAddress.GetUserIP().Result }"); var userInfo = await _appDbContext.UserInfos.Include(k => k.User).FirstOrDefaultAsync(k => k.Id == profileId); if (userInfo == null) { return(new FileResponse(ClientMessageConstant.UserNotFound, HttpStatusCode.NotFound)); } var file = await _appDbContext.Files.FirstOrDefaultAsync(k => k.Id == userInfo.User.OriginalImageFileId); if (file == null) { return(new FileResponse(ClientMessageConstant.FileNotFound, HttpStatusCode.NotFound)); } var fileDb = await _fileDbContext.FileDB.FirstOrDefaultAsync(k => k.Id == file.IdGuid); var model = new FileView() { Id = file.Id, IdGuid = file.IdGuid, FileBytes = fileDb?.Bytes, Name = file.Name, CorrelationId = file.CorrelationId, MimeType = file.MimeType, SizeMb = file.SizeMb, ExtraParams = file.ExtraParams }; return(new FileResponse(model)); } catch (Exception e) { logger.Error(e); return(new FileResponse(e)); } }
public async Task <IReportProblemResponse> ReportProblemAsync(ReportProblemView view) { try { logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } input: {view.ToJsonString()} UserIPAddress: { _userIPAddress.GetUserIP().Result }"); var email = await _appDbContext.UserInfos.Where(k => k.UserId == view.UserID).Select(k => k.Email).FirstOrDefaultAsync(); if (email == null) { return(new ReportProblemResponse(ClientMessageConstant.UserNotFound, HttpStatusCode.NotFound)); } var firstName = await _appDbContext.Profiles.Where(k => k.Id == view.UserID).Select(k => k.FirstNameEn).FirstOrDefaultAsync(); var lastName = await _appDbContext.Profiles.Where(k => k.Id == view.UserID).Select(k => k.LastNameEn).FirstOrDefaultAsync(); var userName = firstName + " " + lastName; var data = new ReportProblem() { UserID = view.UserID, ReportDescription = view.ReportDescription, Created = DateTime.Now, Modified = DateTime.Now, CreatedBy = userName, ModifiedBy = userName, }; if (view.ReportFile != null) { data.ReportFileID = (await SaveFileAsync(view.ReportFile, email)).Id; } await _appDbContext.ReportProblems.AddAsync(data); await _appDbContext.SaveChangesAsync(); await _emailService.SendReportProblemEmailAsync(view.ReportDescription, email, userName); var reportProblem = _mapper.Map <ReportProblemModelView>(data); return(new ReportProblemResponse(reportProblem)); } catch (Exception ex) { logger.Error(ex); throw ex; } }
public async Task <EmailView> SendActivationEmailAsync(string toEmail, string userName, LanguageType languageType = LanguageType.EN) { EmailView emailResponse = new EmailView(); try { logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } EmailTo: {toEmail} UserName: {userName} UserIPAddress: { _userIPAddress.GetUserIP().Result }"); var emailSetting = await _appDbContext.ApplicationSettings.ToListAsync(); var appSetting = new AppSettings() { SmtpHost = emailSetting.FirstOrDefault(k => k.Key == "smtpHostName")?.Value, SmtpPassword = emailSetting.FirstOrDefault(k => k.Key == "smtpPassword")?.Value, SmtpPort = emailSetting.FirstOrDefault(k => k.Key == "smtpPortNumber")?.Value, SmtpUsername = emailSetting.FirstOrDefault(k => k.Key == "smtpUserName")?.Value }; logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } SMTP_PasswordEncrypt: {appSetting.SmtpPassword}"); appSetting.SmtpPassword = _encryptor.Decrypt(appSetting.SmtpPassword); logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } SMTP_PasswordDecrypt: {appSetting.SmtpPassword}"); var email = new MailMessage(appSetting.SmtpUsername, toEmail); var templateInfo = await _appDbContext.TemplateInfos.Include(k => k.EmailHeaderAndFooterTemplate).FirstOrDefaultAsync(k => k.Id == 13002); var otp = GenerateOtp(); var body = languageType == LanguageType.EN ? GetActivationEnglishContent(userName, templateInfo, otp, email) : GetActivationArabicContent(userName, templateInfo, otp, email); email.Body = body; email.IsBodyHtml = true; using (var smtp = new SmtpClient()) { smtp.Host = appSetting.SmtpHost; smtp.EnableSsl = true; NetworkCredential networkCred = new NetworkCredential(appSetting.SmtpUsername, appSetting.SmtpPassword); smtp.UseDefaultCredentials = true; smtp.Credentials = networkCred; smtp.Port = int.Parse(appSetting.SmtpPort); smtp.Send(email); } emailResponse.ID = Guid.NewGuid(); emailResponse.Result = true; emailResponse.Message = "Email Sent"; emailResponse.OTP = otp; return(emailResponse); } catch (Exception e) { logger.Error(e); emailResponse.ID = Guid.NewGuid(); emailResponse.Result = false; emailResponse.Message = "Email Not Sent"; logger.Info(emailResponse); return(emailResponse); } }
public async Task <List <QuestionViewModel> > GetBatchQuestionsAsync(int profileId, int batchId) { //try //{ logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } userId: {profileId} UserIPAddress: { _userIPAddress.GetUserIP().Result }"); var batchDetails = await _appDbContext.Batches.FirstOrDefaultAsync(k => k.Id == batchId && !k.IsClosed && k.DateRegFrom <= DateTime.Now && k.DateRegTo >= DateTime.Now); if (batchDetails == null) { return(null); } var questionGroups = await _appDbContext.QuestionGroupsQuestions.Include(m => m.Group) .Include(k => k.Question).Include(k => k.Question.QuestionTypeItem).Include(k => k.Question.Options) .Where(k => k.GroupId == batchDetails.QuestionGroupId).ToListAsync(); var questions = questionGroups.Select(k => k.Question).ToList(); var questionViews = _mapper.Map <List <QuestionViewModel> >(questions); var application = await _appDbContext.Applications.FirstOrDefaultAsync(k => k.ProfileId == profileId && k.BatchId == batchId); if (application != null) { var listdata = await _appDbContext.QuestionAnswers.Include(k => k.AnswerFile).Include(k => k.Questionansweroptions) .Where(k => k.ProfileId == profileId && k.ApplicationId == application.Id).ToListAsync(); var answers = _mapper.Map <List <QuestionAnswerViewModel> >(listdata); foreach (var item in answers) { var options = listdata.FirstOrDefault(a => a.Id == item.Id).Questionansweroptions.ToList(); item.MultiSelectedOptionId = options.Select(a => new QuestionAnswerOptionViewModel() { optionID = a.optionID, QuestionanswerID = a.QuestionanswerID }).ToList(); } questionViews.ForEach(k => k.Answered = answers.FirstOrDefault(y => y.QuestionId == k.Id)); } return(questionViews); //} //catch (Exception e) //{ // //return new ProgramResponse(e.Message, HttpStatusCode.InternalServerError); //} }
public async Task <IAccountResponse> SignupAsync(UserRegistration view) { try { logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } input : {view.ToJsonString()} UserIPAddress: { _userIPAddress.GetUserIP().Result }"); if (!view.IsTC_Accepted) { view.Message = "Please Accept Terms And Condition"; view.CustomStatusCode = CustomStatusCode.FunctionalError; view.Success = false; return(new AccountResponse(view)); } //var hostname = _httpContextAccessor.HttpContext.Request.Host.Value; // logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } EIDForDEV : {_eidSettings.EIDForDEV}"); if (_eidSettings.EIDForDEV != "true") { //logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } EIDForDEV : {_eidSettings.EIDForDEV} EmiratesID : {view.EmiratesId}"); var data = await CheckEID(view.EmiratesId); if (data == CitizinType.Expat) { view.Message = ClientMessageConstant.EIDNotEligible; view.CustomStatusCode = CustomStatusCode.Expat; view.Success = false; logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } EIDResponse : {view.Message}"); return(new AccountResponse(view)); } else if (data == CitizinType.NotFound) { view.Message = ClientMessageConstant.EIDNotFound; view.CustomStatusCode = CustomStatusCode.NotFound; view.Success = false; logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } EIDResponse : {view.Message}"); return(new AccountResponse(view)); } else if (data == CitizinType.APINotWorking) { view.Message = ClientMessageConstant.EIDAPINotWorking; view.CustomStatusCode = CustomStatusCode.APINotWorking; view.Success = false; logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } EIDResponse : {view.Message}"); return(new AccountResponse(view)); } } if (_eidSettings.EIDForDEV == "true") { if (long.Parse(view.EmiratesId) < 600000000000000L) { view.Message = ClientMessageConstant.EIDNotEligible; view.CustomStatusCode = CustomStatusCode.Expat; view.Success = false; logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } EIDResponse : {view.Message}"); return(new AccountResponse(view)); } } var userProfiles = await _appDbContext.Profiles.FirstOrDefaultAsync(x => x.Eid == view.EmiratesId); if (_appDbContext.UserInfos.Include(k => k.User).Any(o => o.User.Username == view.Email && o.TokenIsCompleted)) { view.Message = ClientMessageConstant.EmailIdExists; view.CustomStatusCode = CustomStatusCode.EmailIDExists; view.Success = false; return(new AccountResponse(view)); } logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } UserProfiles : {userProfiles}"); if (userProfiles != null) { view.Message = ClientMessageConstant.EIDExist; view.CustomStatusCode = CustomStatusCode.EIDExist; view.Success = false; logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } EIDResponse : {view.CustomStatusCode}"); return(new AccountResponse(view)); //var userInfo = await _appDbContext.UserInfos.Include(k => k.User) // .FirstOrDefaultAsync(x => x.UserId == userProfiles.Id); //if (userInfo.TokenIsCompleted) //{ // view.Success = false; // view.Message = ClientMessageConstant.EmiratesIdExist; // view.CustomStatusCode = CustomStatusCode.EmiratesIDExist; // return new AccountResponse(view); //} //var userName = view.FirstName + " " + view.LastName; //var emailResult = await _emailService.SendActivationEmailAsync(userInfo.Email, userName, view.LanguageType); //userInfo.OTP = emailResult.OTP; //await _appDbContext.SaveChangesAsync(); //view.Id = userInfo.Id; //view.Message = ClientMessageConstant.Success; //view.CustomStatusCode = CustomStatusCode.Success; //view.Success = true; //return new AccountResponse(view); } using (var transaction = _appDbContext.Database.BeginTransaction()) { try { var emailResult = await _emailService.SendActivationEmailAsync(view.Email, $"{view.FirstName} {view.LastName}", view.LanguageType); var user = await AddUser(view); var userInfo = await AddUserInfo(user, view.Email, emailResult.OTP); var profile = await AddProfile(view, user, view.EmiratesId); await PermissionSetAsync(user.Id, 2); view.Id = user.Id; view.Message = ClientMessageConstant.Success; view.CustomStatusCode = CustomStatusCode.Success; view.Success = true; transaction.Commit(); return(new AccountResponse(view)); } catch (System.Exception ex) { // TODO logging stuff transaction.Rollback(); view.Success = false; view.Message = ClientMessageConstant.WeAreUnableToProcessYourRequest; view.CustomStatusCode = CustomStatusCode.FunctionalError; new AccountResponse(ex); return(new AccountResponse(view)); } } } catch (Exception ex1) { view.Success = false; view.Message = ClientMessageConstant.WeAreUnableToProcessYourRequest; view.CustomStatusCode = CustomStatusCode.FunctionalError; return(new AccountResponse(view, ex1)); } }
public async Task <IRecommendLeaderResponse> AddRecommendLeader(RecommendLeaderView view) { try { logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } input: {view.ToJsonString()} UserIPAddress: { _userIPAddress.GetUserIP().Result }"); var firstName = await _appDbContext.Profiles.Where(k => k.Id == view.ProfileID).Select(k => k.FirstNameEn).FirstOrDefaultAsync(); var lastName = await _appDbContext.Profiles.Where(k => k.Id == view.ProfileID).Select(k => k.LastNameEn).FirstOrDefaultAsync(); var userName = firstName + " " + lastName; var matchingProfileId = 0; var profileUrl = ""; var RecommendStatusItem = await _appDbContext.LookupItems.Where(k => k.LookupId == (int)LookupType.StatusItem).OrderBy(k => k.NameEn).FirstOrDefaultAsync(); //var email = await _appDbContext.UserInfos.Where(k => k.UserId == view.ProfileID).Select(k => k.Email).FirstOrDefaultAsync(); var linkedinUrl = new Profile(); var TwitterUrl = new Profile(); var email = new UserInfo(); var mobile = new UserInfo(); if (view.LinkedinURL != null) { linkedinUrl = await _appDbContext.Profiles.Where(x => x.LinkedInUrl == view.LinkedinURL).FirstOrDefaultAsync(); } if (view.TwitterURL != null) { TwitterUrl = await _appDbContext.Profiles.Where(x => x.TwitterUrl == view.TwitterURL).FirstOrDefaultAsync(); } if (view.Email != null) { email = await _appDbContext.UserInfos.Where(x => x.Email == view.Email).FirstOrDefaultAsync(); } if (view.ContactNumber != null) { mobile = await _appDbContext.UserInfos.Where(x => x.Mobile == view.ContactNumber).FirstOrDefaultAsync(); } if (linkedinUrl?.LinkedInUrl != null || TwitterUrl?.TwitterUrl != null || email?.Email != null || mobile?.Mobile != null) { profileUrl = "https://stagingplatform.uaeglp.gov.ae/"; matchingProfileId = email.Email != null ? email.Id : mobile.Mobile != null ? mobile.Id : linkedinUrl.LinkedInUrl != null ? linkedinUrl.Id : TwitterUrl.TwitterUrl != null ? TwitterUrl.Id : 0; } var recommendLeader = new RecommendLeadr() { FullName = view.FullName, RecommendingText = view.RecommendingText, Occupation = view.Occupation, ContactNumber = view.ContactNumber, Email = view.Email, LinkedinURL = view.LinkedinURL, TwitterURL = view.TwitterURL, InstagramURL = view.InstagramURL, RecommenderProfileID = view.ProfileID != 0 ? view.ProfileID : null, OtherFitment = view.OthersText, SourceItemID = view.SourceItemID, StatusItemID = RecommendStatusItem.Id, Created = DateTime.Now, Modified = DateTime.Now, CreatedBy = view.ProfileID != null ? userName : "******", ModifiedBy = view.ProfileID != null ? userName : "******", RecommendedProfileID = matchingProfileId != 0 ? matchingProfileId : (int?)null }; if (view.AudioFile != null) { var audioGuid = Guid.NewGuid(); recommendLeader.RecommendingAudioID = audioGuid; minioAudioVideoUpload(view.AudioFile, "audio", audioGuid); } if (view.VideoFile != null) { var videoGuid = Guid.NewGuid(); recommendLeader.RecommendingVideoID = videoGuid; minioAudioVideoUpload(view.VideoFile, "video", videoGuid); } await _appDbContext.RecommandLeaders.AddAsync(recommendLeader); await _appDbContext.SaveChangesAsync(); var recommendId = await _appDbContext.RecommandLeaders.Where(x => x.ID == recommendLeader.ID).Select(x => x.ID).FirstOrDefaultAsync(); List <int?> FitList = new List <int?>(); FitList = view.RecommendLeaderFit != null ? view.RecommendLeaderFit : null; var recommendFit = new RecommendationFitDetails(); var recommendFitOther = new RecommandationOther(); if (FitList != null) { foreach (var item in FitList) { recommendFit = new RecommendationFitDetails() { RecommendID = recommendId, RecommendationFitItemId = item }; await _appDbContext.RecommendationFitDetails.AddAsync(recommendFit); await _appDbContext.SaveChangesAsync(); _appDbContext.Entry(recommendFit).State = EntityState.Detached; } } var data = new RecommendLeaderSubmissionView() { RecommendLeaderSubmission = _mapper.Map <RecommendSubmissionView> (recommendLeader), RecommendLeaderFitment = FitList, }; data.RecommendLeaderSubmission.RecommendViewProfileURL = profileUrl; return(new RecommendLeaderResponse(data)); } catch (Exception ex) { logger.Error(ex); throw ex; } }
public async Task <IPeopleNearByResponse> AddUpdateUserLocation(UserLocationModel view) { try { logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } input: {view.ToJsonString()} UserIPAddress: { _userIPAddress.GetUserIP().Result }"); var firstName = await _appDbContext.Profiles.Where(k => k.Id == view.ProfileID).Select(k => k.FirstNameEn).FirstOrDefaultAsync(); var lastName = await _appDbContext.Profiles.Where(k => k.Id == view.ProfileID).Select(k => k.LastNameEn).FirstOrDefaultAsync(); var userName = firstName + " " + lastName; var data = await _appDbContext.UserLocations.FirstOrDefaultAsync(x => x.ProfileID == view.ProfileID); if (data == null) { data = new UserLocation() { ProfileID = view.ProfileID, Latitude = view.Latitude, Longitude = view.Longitude, isHideLocation = true, Created = DateTime.Now, LastUpdated = DateTime.Now, CreatedBy = userName, LastUpdatedBy = userName }; await _appDbContext.UserLocations.AddAsync(data); await _appDbContext.SaveChangesAsync(); } else { data.Latitude = view.Latitude; data.Longitude = view.Longitude; data.LastUpdated = DateTime.Now; await _appDbContext.SaveChangesAsync(); } var userLocation = _mapper.Map <UserLocationModelView>(data); return(new PeopleNearByResponse(userLocation)); } catch (Exception ex) { logger.Error(ex); throw ex; } }