예제 #1
0
        public HttpResponseMessage PostCheckIn([FromBody] VisitorEntry value)
        {
            String resp = "{\"Response\":\"Undefine\"}";
            var    ctx  = new NestinDBEntities();

            try
            {
                var            context = new NestinDBEntities();
                VisitorRequest guest   = (from g in context.VisitorRequests
                                          where g.id == value.RequestId
                                          select g).FirstOrDefault();

                guest.ActualInTime = DateTime.Now.ToUniversalTime();
                context.SaveChanges();
                Message message = new Message();
                message.Topic       = "Visitor";
                message.SocietyID   = value.SocietyId;
                message.TextMessage = "Your guest " + value.VisitorName + " has arrived.";
                //VisitorNotification visitorNotification = new VisitorNotification(context, value.HostMobile);
                Notifications msg = new Notifications(context);
                msg.Notify(Notifications.TO.User, value.ResID, message);

                resp = "{\"Response\":\"OK\"}";
            }
            catch (Exception ex)
            {
                resp = "{\"Response\":\"Fail\"}";
            }

            var response = Request.CreateResponse(HttpStatusCode.OK);

            response.Content = new StringContent(resp, System.Text.Encoding.UTF8, "application/json");
            return(response);
        }
예제 #2
0
        public async Task <ActionResult> VisitorDisplay(int key)
        {
            using (VisitorEntryDataProvider visitorDP = new VisitorEntryDataProvider()) {
                VisitorEntry data = await visitorDP.GetItemAsync(key);

                if (data == null)
                {
                    throw new Error(this.__ResStr("notFound", "Visitor Entry {0} not found."), key);
                }
                DisplayModel model = new DisplayModel();
                model.SetData(data);
                Module.Title = this.__ResStr("modTitle", "Visitor Entry {0}", key);
                return(View(model));
            }
        }
        public async Task AddGeoLocationAsync(List <string> errorList)
        {
            using (VisitorEntryDataProvider visitorEntryDP = new VisitorEntryDataProvider()) {
                DateTime startTime = DateTime.UtcNow;
                int      overall   = 0;
                List <DataProviderFilterInfo> filters = null;
                filters = DataProviderFilterInfo.Join(filters, new DataProviderFilterInfo {
                    Field = nameof(VisitorEntry.ContinentCode), Operator = "==", Value = VisitorEntry.Unknown
                });
                filters = DataProviderFilterInfo.Join(filters, new DataProviderFilterInfo {
                    Field = nameof(VisitorEntry.AccessDateTime), Operator = "<", Value = startTime
                });

                GeoLocation geoLocation = new GeoLocation();
                int         maxRequest  = geoLocation.GetRemainingRequests();
                for (; maxRequest > 0; --maxRequest)
                {
                    DataProviderGetRecords <VisitorEntry> list = await visitorEntryDP.GetItemsAsync(0, 1, null, filters);

                    if (list.Data.Count == 0)
                    {
                        break;
                    }
                    VisitorEntry         geoData  = list.Data.First();
                    GeoLocation.UserInfo userInfo = await geoLocation.GetUserInfoAsync(geoData.IPAddress);

                    if (!string.IsNullOrWhiteSpace(userInfo.ContinentCode))
                    {
                        geoData.City          = userInfo.City;
                        geoData.ContinentCode = userInfo.ContinentCode;
                        geoData.CountryCode   = userInfo.CountryCode;
                        geoData.RegionCode    = userInfo.RegionCode;
                    }
                    else
                    {
                        geoData.City          = "";
                        geoData.ContinentCode = "";
                        geoData.CountryCode   = "";
                        geoData.RegionCode    = "";
                    }
                    await visitorEntryDP.UpdateSameIPAddressesAsync(geoData);

                    ++overall;
                }
                Logging.AddLog($"Updated {overall} visitor entries");
            }
        }
예제 #4
0
 public BrowseItem(VisitorsModule module, VisitorEntry data)
 {
     Module = module;
     ObjectSupport.CopyData(data, this);
 }
예제 #5
0
 public void SetData(VisitorEntry data)
 {
     ObjectSupport.CopyData(data, this);
 }
예제 #6
0
        public HttpResponseMessage Post([FromBody] VisitorEntry value)
        {
            String resp = "{\"Response\":\"Undefine\"}";

            var ctx = new NestinDBEntities();

            using (var dbContextTransaction = ctx.Database.BeginTransaction())
            {
                try
                {
                    Random r    = new Random();
                    var    code = 0;

                    do
                    {
                        code = r.Next(1000, 9999);
                    } while (IsCodeInUse(code.ToString()));

                    String mobile = value.VisitorMobile;
                    if (mobile.Length > 10)
                    {
                        mobile = mobile.Substring(mobile.Length - 10, mobile.Length);
                    }

                    if (value.VisitorId == 0)
                    {
                        VisitorDetail guest = new VisitorDetail();
                        guest.VisitorMobileNo = mobile;
                        guest.VisitorName     = value.VisitorName;
                        guest.VisitorAddress  = value.VisitorAddress;
                        guest.SocietyId       = value.SocietyId;
                        guest.VisitorImage    = value.VisitorImage;
                        var c = ctx.VisitorDetails;
                        c.Add(guest);
                        ctx.SaveChanges();
                        value.VisitorId = guest.id;
                    }

                    if (value.VisitorId > 0)
                    {
                        ctx.VisitorRequests.Add(new VisitorRequest
                        {
                            VisitorId    = value.VisitorId,
                            VisitPurpose = value.VisitPurpose,
                            StartTime    = DateTime.ParseExact(value.StartTime, "yyyy-MM-ddTHH:mm:ss.SSSZ", System.Globalization.CultureInfo.InvariantCulture),
                            EndTime      = DateTime.ParseExact(value.EndTime, "yyyy-MM-ddTHH:mm:ss.SSSZ", System.Globalization.CultureInfo.InvariantCulture),

                            SecurityCode = code.ToString(),
                            SocietyId    = value.SocietyId,
                            ResId        = value.ResID,
                            Flat         = value.FlatNumber
                        });
                    }

                    ctx.SaveChanges();

                    dbContextTransaction.Commit();
                    var strMessage = "Code for Entry in Flat : " + value.FlatNumber + " is " + code.ToString();
                    VisitorNotification visitorNotification = new VisitorNotification(ctx, value.HostMobile);
                    var result = visitorNotification.NotifyVisitor(strMessage, value.VisitorMobile);


                    resp = "{\"Response\":\"Ok\"}";
                }
                //Exception ex
                catch (DbEntityValidationException dbEx)
                {
                    foreach (var validationErrors in dbEx.EntityValidationErrors)
                    {
                        foreach (var validationError in validationErrors.ValidationErrors)
                        {
                            Log.log("api/Profile Failed to Add User : Property-" + validationError.PropertyName + "  Error- " + validationError.ErrorMessage + "  At " + DateTime.Now.ToString());
                        }
                    }
                    dbContextTransaction.Rollback();
                    resp = "{\"Response\":\"Fail\"}";
                }
                catch (Exception ex)
                {
                    Log.log("api/Profile Failed to Add User Error- " + ex.Message + "  At " + DateTime.Now.ToString());

                    dbContextTransaction.Rollback();
                    resp = "{\"Response\":\"Fail\"}";
                }
            }

            var response = Request.CreateResponse(HttpStatusCode.OK);

            response.Content = new StringContent(resp, System.Text.Encoding.UTF8, "application/json");
            return(response);
        }