public async Task <IActionResult> Add([FromBody] entity.Visitor visitor) { ISingleModelResponse <entity.Visitor> response = new SingleModelResponse <entity.Visitor>(); try { response.Model = await _visitorRepository.AddVisitor(visitor); response.Message = "Visitor added successfully"; } catch (Exception ex) { _logger.LogError(entities.LoggingEvents.InsertItem, ex, "Error while adding visitor"); response.IsError = true; response.ErrorMessage = "Could not add Visitor"; return(BadRequest(response)); } return(Ok(response)); }
private void TrackVisitor(int SiteId) { // get request attributes string ip = HttpContext.Connection.RemoteIpAddress.ToString(); string useragent = Request.Headers[HeaderNames.UserAgent]; string language = Request.Headers[HeaderNames.AcceptLanguage]; if (language.Contains(",")) { language = language.Substring(0, language.IndexOf(",")); } string url = Request.GetEncodedUrl(); string referrer = Request.Headers[HeaderNames.Referer]; int? userid = null; if (User.HasClaim(item => item.Type == ClaimTypes.PrimarySid)) { userid = int.Parse(User.Claims.First(item => item.Type == ClaimTypes.PrimarySid).Value); } var VisitorCookie = "APP_VISITOR_" + SiteId.ToString(); if (!int.TryParse(Request.Cookies[VisitorCookie], out VisitorId)) { var visitor = new Visitor(); visitor.SiteId = SiteId; visitor.IPAddress = ip; visitor.UserAgent = useragent; visitor.Language = language; visitor.Url = url; visitor.Referrer = referrer; visitor.UserId = userid; visitor.Visits = 1; visitor.CreatedOn = DateTime.UtcNow; visitor.VisitedOn = DateTime.UtcNow; visitor = _visitors.AddVisitor(visitor); Response.Cookies.Append( VisitorCookie, visitor.VisitorId.ToString(), new CookieOptions() { Expires = DateTimeOffset.UtcNow.AddYears(1), IsEssential = true } ); } else { var visitor = _visitors.GetVisitor(VisitorId); if (visitor != null) { visitor.IPAddress = ip; visitor.UserAgent = useragent; visitor.Language = language; visitor.Url = url; if (!string.IsNullOrEmpty(referrer)) { visitor.Referrer = referrer; } if (userid != null) { visitor.UserId = userid; } visitor.Visits += 1; visitor.VisitedOn = DateTime.UtcNow; _visitors.UpdateVisitor(visitor); } else { Response.Cookies.Delete(VisitorCookie); } } }
private void TrackVisitor(int SiteId) { try { // get request attributes string useragent = (Request.Headers[HeaderNames.UserAgent] != StringValues.Empty) ? Request.Headers[HeaderNames.UserAgent] : "(none)"; string language = (Request.Headers[HeaderNames.AcceptLanguage] != StringValues.Empty) ? Request.Headers[HeaderNames.AcceptLanguage] : ""; language = (language.Contains(",")) ? language.Substring(0, language.IndexOf(",")) : language; language = (language.Contains(";")) ? language.Substring(0, language.IndexOf(";")) : language; language = (language.Trim().Length == 0) ? "??" : language; // filter string filter = Constants.DefaultVisitorFilter; var settings = _settings.GetSettings(EntityNames.Site, SiteId); if (settings.Any(item => item.SettingName == "VisitorFilter")) { filter = settings.First(item => item.SettingName == "VisitorFilter").SettingValue; } foreach (string term in filter.ToLower().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(sValue => sValue.Trim()).ToArray()) { if (RemoteIPAddress.ToLower().Contains(term) || useragent.ToLower().Contains(term) || language.ToLower().Contains(term)) { return; } } // get other request attributes string url = Request.GetEncodedUrl(); string referrer = (Request.Headers[HeaderNames.Referer] != StringValues.Empty) ? Request.Headers[HeaderNames.Referer] : ""; int? userid = null; if (User.HasClaim(item => item.Type == ClaimTypes.PrimarySid)) { userid = int.Parse(User.Claims.First(item => item.Type == ClaimTypes.PrimarySid).Value); } // check if cookie already exists Visitor visitor = null; bool addcookie = false; var VisitorCookie = "APP_VISITOR_" + SiteId.ToString(); if (!int.TryParse(Request.Cookies[VisitorCookie], out VisitorId)) { // if enabled use IP Address correlation VisitorId = -1; bool correlate = true; if (settings.Any(item => item.SettingName == "VisitorCorrelation")) { correlate = bool.Parse(settings.First(item => item.SettingName == "VisitorCorrelation").SettingValue); } if (correlate) { visitor = _visitors.GetVisitor(SiteId, RemoteIPAddress); if (visitor != null) { VisitorId = visitor.VisitorId; addcookie = true; } } } if (VisitorId == -1) { // create new visitor visitor = new Visitor(); visitor.SiteId = SiteId; visitor.IPAddress = RemoteIPAddress; visitor.UserAgent = useragent; visitor.Language = language; visitor.Url = url; visitor.Referrer = referrer; visitor.UserId = userid; visitor.Visits = 1; visitor.CreatedOn = DateTime.UtcNow; visitor.VisitedOn = DateTime.UtcNow; visitor = _visitors.AddVisitor(visitor); VisitorId = visitor.VisitorId; addcookie = true; } else { if (visitor == null) { // get visitor if it was not previously loaded visitor = _visitors.GetVisitor(VisitorId); } if (visitor != null) { // update visitor visitor.IPAddress = RemoteIPAddress; visitor.UserAgent = useragent; visitor.Language = language; visitor.Url = url; if (!string.IsNullOrEmpty(referrer)) { visitor.Referrer = referrer; } if (userid != null) { visitor.UserId = userid; } visitor.Visits += 1; visitor.VisitedOn = DateTime.UtcNow; _visitors.UpdateVisitor(visitor); } else { // remove cookie if VisitorId does not exist Response.Cookies.Delete(VisitorCookie); } } // append cookie if (addcookie) { Response.Cookies.Append( VisitorCookie, VisitorId.ToString(), new CookieOptions() { Expires = DateTimeOffset.UtcNow.AddYears(1), IsEssential = true } ); } } catch (Exception ex) { _logger.Log(LogLevel.Error, this, LogFunction.Other, "Error Tracking Visitor {Error}", ex.Message); } }
public IActionResult Create(VisitViewModel viewModel, string SecondaryValues, int PrimaryValues) { try { if (ModelState.IsValid) { viewModel.CreatedBy = int.Parse(HttpContext.Session.GetString("UserID")); if (!string.IsNullOrEmpty(SecondaryValues)) { string[] array = SecondaryValues.Split(","); viewModel.SecondaryParticipant = new List <int>(); for (int i = 0; array.Length > i; i++) { viewModel.SecondaryParticipant.Add(Convert.ToInt32(array[i])); } } if (PrimaryValues != 0) { viewModel.PrimaryParticipant = PrimaryValues; } repository.AddVisitor(viewModel); string filepath = Path.Combine(Directory.GetCurrentDirectory(), "EmailTemplates", "EmailTemplate.html"); string template = System.IO.File.ReadAllText(filepath); template = template.Replace("#USERNAME#", " All"); template = template.Replace("#LINKTOREPLACE#", ""); template = template.Replace("#LINKADDRESS#", ""); template = template.Replace("#LINKTEXT#", ""); template = template.Replace("#CREATEDUSERNAME#", HttpContext.Session.GetString("UserName")); string body = template; body = body.Replace("#BODY#", "A Visit has been created on " + viewModel.VisitingDate.ToShortDateString() + " from " + viewModel.StartTime.ToShortTimeString() + " to " + viewModel.EndTime.ToShortTimeString() + ". Please be available."); TimeSpan ts = viewModel.EndTime - viewModel.StartTime; eAppointment appointment = new eAppointment(); appointment.Subject = "Visit Create Notification"; appointment.Body = body; appointment.Location = "Canarys Automation"; appointment.Duration = Convert.ToInt32(ts.TotalMinutes); DateTime dt = viewModel.VisitingDate; TimeSpan timeSpan = new TimeSpan(viewModel.StartTime.Hour, viewModel.StartTime.Minute, viewModel.StartTime.Second); viewModel.VisitingDate = viewModel.VisitingDate.Add(timeSpan); appointment.Start = Convert.ToDateTime(viewModel.VisitingDate); _context = new VisitorManagementContext(); List <string> EmailIDs = new List <string>(); if (viewModel.PrimaryParticipant != 0) { string mailid = _context.User.Where(r => r.UserID == viewModel.PrimaryParticipant).FirstOrDefault().EmailAddress; EmailIDs.Add(mailid); } if (viewModel.SecondaryParticipant != null && viewModel.SecondaryParticipant.Count > 0) { for (int i = 0; viewModel.SecondaryParticipant.Count > i; i++) { string EmailAddres = _context.User.Where(r => r.UserID == viewModel.SecondaryParticipant[i]).FirstOrDefault().EmailAddress; EmailIDs.Add(EmailAddres); } } EmailIDs.Add(viewModel.EmailAddress); appointment.Body = body; appointment.Email = EmailIDs.ToArray(); outLookEvents.SMTPEvent(appointment); EmailIDs = new List <string>(); if (viewModel.VisitArrangement != null && viewModel.VisitArrangement.Where(r => r.IsSelected == true).Count() > 0) { StringBuilder builder = new StringBuilder(); for (int i = 0; viewModel.VisitArrangement.Where(r => r.IsSelected == true).Count() > i; i++) { var arrangment = viewModel.VisitArrangement.Where(r => r.IsSelected == true).ElementAt(i); string arrangmentname = _context.Arrangement.Where(r => r.ArrangementId == arrangment.ArrangementId).FirstOrDefault().Name; var delegatecontact = _context.User.Where(r => r.UserID == viewModel.VisitArrangement.Where(l => l.IsSelected == true).ElementAt(i).DelegateContactID).FirstOrDefault(); EmailIDs.Add(delegatecontact.EmailAddress); builder.AppendLine(arrangmentname + " Arrangements " + " for these description " + arrangment.Description + " by " + delegatecontact.FirstName); } body = template; body = body.Replace("#BODY#", "A Visit has been created on " + viewModel.VisitingDate.ToShortDateString() + " from " + viewModel.StartTime.ToShortTimeString() + " to " + viewModel.EndTime.ToShortTimeString() + ". Please be available. <br /> Please Arrange the below items <br /> " + builder.ToString()); appointment.Body = body; appointment.Email = EmailIDs.ToArray(); appointment.MeetingStatus = OlMeetingStatus.olMeeting; outLookEvents.SMTPEvent(appointment); } return(RedirectToAction("Index")); } else { ModelState.AddModelError("", "Unable to save changes. " + "Try again, and if the problem persists " + "see your system administrator."); } } catch (DbUpdateException ex) { throw ex; } return(View(viewModel)); }
private void TrackVisitor(int SiteId) { // get request attributes string useragent = (Request.Headers[HeaderNames.UserAgent] != StringValues.Empty) ? Request.Headers[HeaderNames.UserAgent] : ""; string language = (Request.Headers[HeaderNames.AcceptLanguage] != StringValues.Empty) ? Request.Headers[HeaderNames.AcceptLanguage] : ""; language = (language.Contains(",")) ? language.Substring(0, language.IndexOf(",")) : language; language = (language.Contains(";")) ? language.Substring(0, language.IndexOf(";")) : language; language = (language.Trim().Length == 0) ? "??" : language; // filter var filter = _settings.GetSetting(EntityNames.Site, SiteId, "VisitorFilter"); if (filter != null && !string.IsNullOrEmpty(filter.SettingValue)) { foreach (string term in filter.SettingValue.ToLower().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries).Select(sValue => sValue.Trim()).ToArray()) { if (RemoteIPAddress.ToLower().Contains(term) || useragent.ToLower().Contains(term) || language.ToLower().Contains(term)) { return; } } } string url = Request.GetEncodedUrl(); string referrer = (Request.Headers[HeaderNames.Referer] != StringValues.Empty) ? Request.Headers[HeaderNames.Referer] : ""; int? userid = null; if (User.HasClaim(item => item.Type == ClaimTypes.PrimarySid)) { userid = int.Parse(User.Claims.First(item => item.Type == ClaimTypes.PrimarySid).Value); } var VisitorCookie = "APP_VISITOR_" + SiteId.ToString(); if (!int.TryParse(Request.Cookies[VisitorCookie], out VisitorId)) { var visitor = new Visitor(); visitor.SiteId = SiteId; visitor.IPAddress = RemoteIPAddress; visitor.UserAgent = useragent; visitor.Language = language; visitor.Url = url; visitor.Referrer = referrer; visitor.UserId = userid; visitor.Visits = 1; visitor.CreatedOn = DateTime.UtcNow; visitor.VisitedOn = DateTime.UtcNow; visitor = _visitors.AddVisitor(visitor); Response.Cookies.Append( VisitorCookie, visitor.VisitorId.ToString(), new CookieOptions() { Expires = DateTimeOffset.UtcNow.AddYears(1), IsEssential = true } ); } else { var visitor = _visitors.GetVisitor(VisitorId); if (visitor != null) { visitor.IPAddress = RemoteIPAddress; visitor.UserAgent = useragent; visitor.Language = language; visitor.Url = url; if (!string.IsNullOrEmpty(referrer)) { visitor.Referrer = referrer; } if (userid != null) { visitor.UserId = userid; } visitor.Visits += 1; visitor.VisitedOn = DateTime.UtcNow; _visitors.UpdateVisitor(visitor); } else { Response.Cookies.Delete(VisitorCookie); } } }