Ejemplo n.º 1
0
        public async Task<ActionResult<Result>> EditStatus(EditStatusViewModel EditStatusVM)
        {
            try
            {
      
                var Result = new Result();
                if (EditStatusVM.UserType == UserTypeEnum.Citizen)
                {
                     Result = await _AdminManager.EditCitizenStatus(EditStatusVM);

                }
                else if (EditStatusVM.UserType == UserTypeEnum.Shop)
                {
                     Result = await _AdminManager.EditShopStatus(EditStatusVM);

                }
                return Result;


            }
            catch (Exception ex)
            {
                _exceptionManager.SaveLog(Request.Path, EditStatusVM, ex, null);
                return new Result()
                {
                    IsSuccess = false,
                    Errors = new List<string> { Resources.ExceptionMessage }
                };
            }
        }
Ejemplo n.º 2
0
        public IActionResult UpdateStatus(string id, [FromBody] EditStatusViewModel status)
        {
            PersonDTO person = personService.GetPerson(id);

            if (status != null)
            {
                taskService.UpdateStatus(status.TaskId, status.Status, person.Id);
                Log.Information($"Status was been updated by the user with UserId: {id}");
            }

            return(Ok());
        }
Ejemplo n.º 3
0
        // GET: AdminStatus
        public ActionResult Index()
        {
            EditStatusViewModel editStatusViewModel = new EditStatusViewModel
            {
                Date   = DateTime.Now,
                Status = 0
            };

            try
            {
                var q = (from s in db.Status
                         select new EditStatusViewModel
                {
                    Id = s.Id,
                    Status = s.Status,
                    Date = s.Date
                }).FirstOrDefault();

                if (q != null)
                {
                    editStatusViewModel = q;
                }
                if (q.Date == DateTime.MinValue)
                {
                    editStatusViewModel.Date = DateTime.Now;
                }
                List <SelectListItem> StatusList = StatusListModel.StatusList;
                ViewBag.StatusList = StatusList;
            }
            catch (Exception exception)
            {
                Exception ie = exception;
                System.Text.StringBuilder sb = new System.Text.StringBuilder("Error. ");
                while (ie != null)
                {
                    sb.AppendFormat("{0} ", ie.Message);
                    ie = ie.InnerException;
                }
                throw new ApplicationException(sb.ToString());
            }
            return(View(editStatusViewModel));
        }
Ejemplo n.º 4
0
        public ActionResult Index(EditStatusViewModel editStatusViewModel)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    if (editStatusViewModel != null && editStatusViewModel.Id == 0)
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                    }
                    StatusModel statusModel = db.Status.Find(editStatusViewModel.Id);
                    if (statusModel == null)
                    {
                        return(HttpNotFound());
                    }

                    statusModel.Status          = editStatusViewModel.Status;
                    statusModel.Date            = editStatusViewModel.Date;
                    db.Entry(statusModel).State = EntityState.Modified;
                    db.SaveChanges();
                    return(RedirectToAction("Index", "Home"));
                }
            }
            catch (Exception exception)
            {
                Exception ie = exception;
                System.Text.StringBuilder sb = new System.Text.StringBuilder("Error. ");
                while (ie != null)
                {
                    sb.AppendFormat("{0} ", ie.Message);
                    ie = ie.InnerException;
                }
                throw new ApplicationException(sb.ToString());
            }
            List <SelectListItem> StatusList = StatusListModel.StatusList;

            ViewBag.StatusList = StatusList;
            return(View(editStatusViewModel));
        }
Ejemplo n.º 5
0
 public EditStatusPage()
 {
     InitializeComponent();
     BindingContext = new EditStatusViewModel();
 }
Ejemplo n.º 6
0
        public async Task <Result> EditShopStatus(EditStatusViewModel EditStatusVM)
        {
            var shopId    = _context.Shop.Where(u => u.Id.ToString() == EditStatusVM.UserId).Select(u => u.Id).FirstOrDefault();
            var oldStatus = _context.ShopStatus.Where(u => u.ShopId.ToString() == EditStatusVM.UserId).OrderByDescending(u => u.Id).Select(u => u.UserStatusEnum).FirstOrDefault();

            if (shopId != 0 || shopId != null)
            {
                if (oldStatus != EditStatusVM.UserStatusEnum)
                {
                    ShopStatus shopStatus = new ShopStatus();
                    shopStatus.ShopId         = shopId;
                    shopStatus.UserStatusEnum = EditStatusVM.UserStatusEnum;
                    shopStatus.Date           = DateTime.Now;
                    shopStatus.CreationDate   = DateTime.Now;
                    shopStatus.IsActive       = true;
                    shopStatus.CreatedBy      = "test";

                    _context.ShopStatus.Add(shopStatus);
                    _context.SaveChanges();

                    #region SendNotification For Shops

                    var titleForShop = Resources.MedicalStatusAlertTitle;
                    var bodyForShop  = Resources.ShopStatusIsChanged + " " + EditStatusVM.UserStatusEnum;

                    PayLoadViewModel payLoadDataForShop = new PayLoadViewModel
                    {
                        InfectedUserName = "******",
                        Title            = titleForShop,
                        Body             = bodyForShop
                    };

                    var TokensListForShop = GetShopToken(shopId);

                    FirebaseHelper.SendNotification(TokensListForShop, titleForShop, bodyForShop, payLoadDataForShop);


                    #endregion



                    #region SendNotification For CheckedIn Users In shop

                    if (EditStatusVM.UserStatusEnum == UserStatusEnum.Normal)
                    {
                        var userIds  = _context.CheckInOut.Where(c => c.ShopId == shopId).Select(c => c.UserId).Distinct().ToList();
                        var shopName = _context.Shop.Where(c => c.Id == shopId).Select(c => c.Name).FirstOrDefault();

                        var titleForCheckedInUser = Resources.MedicalStatusAlertTitle;
                        var bodyForCheckedInUser  = shopName + " " + Resources.ShopStatusIsChangedToNormal;

                        PayLoadViewModel payLoadDataForCheckedInUser = new PayLoadViewModel
                        {
                            InfectedUserName = "******",
                            Title            = titleForCheckedInUser,
                            Body             = bodyForCheckedInUser
                        };

                        var TokensListForCheckedInUser = GetUsersTokens(userIds);

                        FirebaseHelper.SendNotification(TokensListForCheckedInUser, titleForCheckedInUser, bodyForCheckedInUser, payLoadDataForCheckedInUser);
                    }

                    #endregion


                    return(new Result()
                    {
                        IsSuccess = true,
                        Errors = new List <string>()
                    });
                }
                else
                {
                    return(new Result()
                    {
                        IsSuccess = false,
                        Errors = new List <string> {
                            Resources.ShopIsAlreadyOnThisStatus
                        }
                    });
                }
            }
            else
            {
                return(new Result()
                {
                    IsSuccess = false,
                    Errors = new List <string> {
                        Resources.ShopIsNotExist
                    }
                });
            }
        }
Ejemplo n.º 7
0
        public async Task <Result> EditCitizenStatus(EditStatusViewModel EditStatusVM)
        {
            if (EditStatusVM.UserStatusEnum != UserStatusEnum.Normal)
            {
                // change user status
                var UserId    = _context.Users.Where(u => u.Id == EditStatusVM.UserId).Select(u => u.Id).FirstOrDefault();
                var oldStatus = _context.UserStatus.Where(u => u.UserId == EditStatusVM.UserId).OrderByDescending(u => u.Id).Select(u => u.UserStatusEnum).FirstOrDefault();

                if (UserId != null)
                {
                    if (oldStatus != EditStatusVM.UserStatusEnum)
                    {
                        UserStatus userStatus = new UserStatus();
                        userStatus.UserId         = UserId;
                        userStatus.UserStatusEnum = EditStatusVM.UserStatusEnum;
                        userStatus.Date           = DateTime.Now;
                        userStatus.CreationDate   = DateTime.Now;
                        userStatus.IsActive       = true;
                        userStatus.CreatedBy      = "test";
                        _context.UserStatus.Add(userStatus);
                        _context.SaveChanges();

                        //change all checkedin shops in last 14 day satus to be suspected
                        var checkedInPlacesLastTwoWeeks = _context.CheckInOut.Where(c => c.UserId == EditStatusVM.UserId && c.CheckInDate.Value.AddDays(14) > DateTime.Now).Select(c => c.ShopId).ToList();

                        var CheckInOutList = _context.CheckInOut.Where(c => c.UserId == EditStatusVM.UserId && c.CheckInDate.Value.AddDays(14) > DateTime.Now).ToList();

                        List <CheckInOutPeriod> CheckInOutPeriodList = new List <CheckInOutPeriod>();
                        foreach (var CheckInOut in CheckInOutList)
                        {
                            CheckInOutPeriod CheckInOutPeriod = new CheckInOutPeriod();
                            CheckInOutPeriod.CheckIn  = CheckInOut.CheckInDate;
                            CheckInOutPeriod.CheckOut = CheckInOut.CheckOutDate;
                            CheckInOutPeriodList.Add(CheckInOutPeriod);
                        }

                        var CheckedInAtThisShops = _context.CheckInOut.Where(c => checkedInPlacesLastTwoWeeks.Contains(c.ShopId) && c.UserId != EditStatusVM.UserId).ToList();

                        List <string> userUdsForNotifications = new List <string>();

                        foreach (var CheckPeriod in CheckInOutPeriodList)
                        {
                            foreach (var usersCheckedIn in CheckedInAtThisShops)
                            {
                                if ((usersCheckedIn.CheckInDate < CheckPeriod.CheckOut && usersCheckedIn.CheckOutDate > CheckPeriod.CheckIn) || (usersCheckedIn.CheckInDate > CheckPeriod.CheckIn && CheckPeriod.CheckOut == null))
                                {
                                    UserStatus newUserStatus = new UserStatus();
                                    newUserStatus.UserId         = usersCheckedIn.UserId;
                                    newUserStatus.UserStatusEnum = UserStatusEnum.Suspected;
                                    newUserStatus.Date           = DateTime.Now;
                                    newUserStatus.CreationDate   = DateTime.Now;
                                    newUserStatus.IsActive       = true;
                                    newUserStatus.CreatedBy      = "test";
                                    _context.UserStatus.Add(newUserStatus);
                                    _context.SaveChanges();
                                    userUdsForNotifications.Add(usersCheckedIn.UserId);
                                }
                            }
                        }

                        List <long> NormalShopIds    = new List <long>();
                        List <long> SuspectedShopIds = new List <long>();
                        List <long> InfectedShopIds  = new List <long>();


                        // change shop status

                        foreach (var checkedInShop in checkedInPlacesLastTwoWeeks)
                        {
                            var suspectedusersIds = _context.CheckInOut.Where(c => c.ShopId == checkedInShop).Select(c => c.UserId).Distinct().ToList();

                            List <UserStatusEnum> NoramlUsersStatesList    = new List <UserStatusEnum>();
                            List <UserStatusEnum> SuspectedUsersStatesList = new List <UserStatusEnum>();
                            List <UserStatusEnum> InfectedUsersStatesList  = new List <UserStatusEnum>();

                            foreach (var suspecteduserId in suspectedusersIds)
                            {
                                UserStatusEnum userLastStatus = _context.UserStatus.Where(u => u.UserId == suspecteduserId).OrderByDescending(u => u.Id).Select(u => u.UserStatusEnum).FirstOrDefault();

                                if (userLastStatus == UserStatusEnum.Normal)
                                {
                                    NoramlUsersStatesList.Add(userLastStatus);
                                }
                                else if (userLastStatus == UserStatusEnum.Suspected)
                                {
                                    SuspectedUsersStatesList.Add(userLastStatus);
                                }
                                else if (userLastStatus == UserStatusEnum.Infected)
                                {
                                    InfectedUsersStatesList.Add(userLastStatus);
                                }
                            }

                            if (NoramlUsersStatesList.Count() > (SuspectedUsersStatesList.Count() + InfectedUsersStatesList.Count()))
                            {
                                var shopStatus = _context.ShopStatus.Where(s => s.ShopId == checkedInShop).OrderByDescending(s => s.Id).Select(u => u.UserStatusEnum).FirstOrDefault();
                                if (shopStatus != UserStatusEnum.Normal)
                                {
                                    ShopStatus NewShopStatus = new ShopStatus();
                                    NewShopStatus.ShopId         = checkedInShop;
                                    NewShopStatus.UserStatusEnum = UserStatusEnum.Normal;
                                    NewShopStatus.Date           = DateTime.Now;
                                    NewShopStatus.CreationDate   = DateTime.Now;
                                    NewShopStatus.IsActive       = true;
                                    NewShopStatus.CreatedBy      = "test";
                                    _context.ShopStatus.Add(NewShopStatus);
                                    _context.SaveChanges();
                                    NormalShopIds.Add(checkedInShop);
                                }
                            }

                            else if (SuspectedUsersStatesList.Count() > NoramlUsersStatesList.Count())
                            {
                                var shopStatus = _context.ShopStatus.Where(s => s.ShopId == checkedInShop).OrderByDescending(s => s.Id).Select(u => u.UserStatusEnum).FirstOrDefault();
                                if (shopStatus != UserStatusEnum.Suspected)
                                {
                                    ShopStatus NewShopStatus = new ShopStatus();
                                    NewShopStatus.ShopId         = checkedInShop;
                                    NewShopStatus.UserStatusEnum = UserStatusEnum.Suspected;
                                    NewShopStatus.Date           = DateTime.Now;
                                    NewShopStatus.CreationDate   = DateTime.Now;
                                    NewShopStatus.IsActive       = true;
                                    NewShopStatus.CreatedBy      = "test";
                                    _context.ShopStatus.Add(NewShopStatus);
                                    _context.SaveChanges();
                                    SuspectedShopIds.Add(checkedInShop);
                                }
                            }

                            //else if (InfectedUsersStatesList.Count() >= NoramlUsersStatesList.Count() || InfectedUsersStatesList.Count() >= SuspectedUsersStatesList.Count() || (((SuspectedUsersStatesList.Count() + InfectedUsersStatesList.Count()) > 0) && NoramlUsersStatesList.Count() == 0))
                            //{
                            //    var shopStatus = _context.ShopStatus.Where(s => s.ShopId == checkedInShop).OrderByDescending(s => s.Id).Select(u => u.UserStatusEnum).FirstOrDefault();
                            //    if (shopStatus != UserStatusEnum.Infected)
                            //    {
                            //        ShopStatus NewShopStatus = new ShopStatus();
                            //        NewShopStatus.ShopId = checkedInShop;
                            //        NewShopStatus.UserStatusEnum = UserStatusEnum.Infected;
                            //        NewShopStatus.Date = DateTime.Now;
                            //        NewShopStatus.CreationDate = DateTime.Now;
                            //        NewShopStatus.IsActive = true;
                            //        NewShopStatus.CreatedBy = "test";
                            //        _context.ShopStatus.Add(NewShopStatus);
                            //        _context.SaveChanges();
                            //        InfectedShopIds.Add(checkedInShop);
                            //    }
                            //}
                        }


                        #region SendNotification For Infected User
                        //send notifications
                        var title = Resources.MedicalStatusAlertTitle;
                        var body  = Resources.MedicalStatusIsChanged + " " + EditStatusVM.UserStatusEnum + " " + Resources.PleaseQuarantineYourSelf;

                        PayLoadViewModel payLoadData = new PayLoadViewModel
                        {
                            InfectedUserName = "******",
                            Title            = title,
                            Body             = body
                        };

                        var TokensList = GetUserToken(EditStatusVM.UserId);

                        FirebaseHelper.SendNotification(TokensList, title, body, payLoadData);

                        #endregion


                        #region SendNotification For Suspected Users
                        //send notifications
                        var titleForSuspected = Resources.MedicalStatusAlertTitle;
                        var bodyForSuspected  = Resources.MedicalStatusIsChanged + " " + Resources.ContactedWithInfectedPerson;

                        PayLoadViewModel payLoadDataForSuspected = new PayLoadViewModel
                        {
                            InfectedUserName = "******",
                            Title            = titleForSuspected,
                            Body             = bodyForSuspected
                        };

                        var TokensListForSuspected = GetUsersTokens(userUdsForNotifications);

                        FirebaseHelper.SendNotification(TokensListForSuspected, titleForSuspected, bodyForSuspected, payLoadDataForSuspected);

                        #endregion


                        #region SendNotification For Normal Shops

                        if (NormalShopIds != null && NormalShopIds.Count() > 0)
                        {
                            var titleForShop      = Resources.MedicalStatusAlertTitle;
                            var bodyForNormalShop = Resources.TruststatusIsNormal;

                            PayLoadViewModel payLoadDataForNormalShop = new PayLoadViewModel
                            {
                                InfectedUserName = "******",
                                Title            = titleForShop,
                                Body             = bodyForNormalShop
                            };

                            var TokensListForNormalShops = GetShopsTokens(NormalShopIds);

                            FirebaseHelper.SendNotification(TokensListForNormalShops, titleForShop, bodyForNormalShop, payLoadDataForNormalShop);
                        }

                        #endregion

                        #region SendNotification For Suspected Shops

                        if (SuspectedShopIds != null && SuspectedShopIds.Count() > 0)
                        {
                            var titleForShop          = Resources.MedicalStatusAlertTitle;
                            var bodyForSuspectedShops = Resources.InfectedPersonVisitStore;

                            PayLoadViewModel payLoadDataForSuspectedShops = new PayLoadViewModel
                            {
                                InfectedUserName = "******",
                                Title            = titleForShop,
                                Body             = bodyForSuspectedShops
                            };

                            var TokensListForSuspectedShops = GetShopsTokens(SuspectedShopIds);

                            FirebaseHelper.SendNotification(TokensListForSuspectedShops, titleForShop, bodyForSuspectedShops, payLoadDataForSuspectedShops);
                        }

                        #endregion

                        //#region SendNotification For Infected Shops

                        //if (InfectedShopIds != null && InfectedShopIds.Count() > 0)
                        //{
                        //    var titleForShop = Resources.MedicalStatusAlertTitle;
                        //    var bodyForInfectedShops = Resources.InfectedPersonVisitStore;

                        //    PayLoadViewModel payLoadDataForInfectedShops = new PayLoadViewModel
                        //    {
                        //        InfectedUserName = "******",
                        //        Title = titleForShop,
                        //        Body = bodyForInfectedShops
                        //    };

                        //    var TokensListForInfectedShops = GetShopsTokens(InfectedShopIds);

                        //    FirebaseHelper.SendNotification(TokensListForInfectedShops, titleForShop, bodyForInfectedShops, payLoadDataForInfectedShops);

                        //}

                        //#endregion


                        return(new Result()
                        {
                            IsSuccess = true,
                            Errors = new List <string>()
                        });
                    }
                    else
                    {
                        return(new Result()
                        {
                            IsSuccess = false,
                            Errors = new List <string> {
                                Resources.UserIsAlreadyOnThisStatus
                            }
                        });
                    }
                }
                else
                {
                    return(new Result()
                    {
                        IsSuccess = false,
                        Errors = new List <string> {
                            Resources.UserNotExist
                        }
                    });
                }
            }
            else
            {
                // change user status
                var UserId    = _context.Users.Where(u => u.Id == EditStatusVM.UserId).Select(u => u.Id).FirstOrDefault();
                var oldStatus = _context.UserStatus.Where(u => u.UserId == EditStatusVM.UserId).OrderByDescending(u => u.Id).Select(u => u.UserStatusEnum).FirstOrDefault();
                if (UserId != null)
                {
                    if (oldStatus != UserStatusEnum.Normal)
                    {
                        UserStatus userStatus = new UserStatus();
                        userStatus.UserId         = UserId;
                        userStatus.UserStatusEnum = EditStatusVM.UserStatusEnum;
                        userStatus.Date           = DateTime.Now;
                        userStatus.CreationDate   = DateTime.Now;
                        userStatus.IsActive       = true;
                        userStatus.CreatedBy      = "test";
                        _context.UserStatus.Add(userStatus);
                        _context.SaveChanges();

                        #region SendNotification For Normal User
                        //send notifications
                        var title = Resources.MedicalStatusAlertTitle;
                        var body  = Resources.MedicalStatusIsChanged + " " + EditStatusVM.UserStatusEnum;

                        PayLoadViewModel payLoadData = new PayLoadViewModel
                        {
                            InfectedUserName = "******",
                            Title            = title,
                            Body             = body
                        };

                        var TokensList = GetUserToken(EditStatusVM.UserId);

                        FirebaseHelper.SendNotification(TokensList, title, body, payLoadData);

                        #endregion
                    }
                    else
                    {
                        return(new Result()
                        {
                            IsSuccess = false,
                            Errors = new List <string> {
                                Resources.UserIsAlreadyOnThisStatus
                            }
                        });
                    }
                }
                else
                {
                    return(new Result()
                    {
                        IsSuccess = false,
                        Errors = new List <string> {
                            Resources.UserNotExist
                        }
                    });
                }

                return(new Result()
                {
                    IsSuccess = true,
                    Errors = new List <string>()
                });
            }
        }