示例#1
0
        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));
        }
示例#2
0
        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);
                }
            }
        }
示例#3
0
        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));
        }
示例#5
0
        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);
                }
            }
        }