Exemplo n.º 1
0
        public async void TrackingAgant(TrackViewModel model)
        {
            try
            {
                // ErrorSaver.SaveError("Track Agent -" + model.UserId + model.RequestId);
                // TrackViewModel model+
                // this method will send Longitude, Latitude to the other user
                await UpdateRequest(model);

                // ErrorSaver.SaveError("After Update Request -" + model.UserId + model.RequestId);

                Clients.Group(model.UserId + model.RequestId).agantMove(model);


                // ErrorSaver.SaveError(UserHandler.ConnectedIds.Count.ToString());


                // ErrorSaver.SaveError("After Group Agent Move -" + model.UserId + model.RequestId);

                Clients.All.agantMove(model);

                // ErrorSaver.SaveError("After Clients All Agent Move -" + model.UserId + model.RequestId);
            }
            catch (Exception e)
            {
                ErrorSaver.SaveError("exeption thrown - " + e.Message);
            }
        }
Exemplo n.º 2
0
        public async Task <IHttpActionResult> ReSendConfirmationCode(string id)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(id))
                {
                    return(BadRequest("User Id Not Send"));
                }

                var user = await _repo.FindUserByUserName(id);

                if (user == null)
                {
                    return(BadRequest("هذا المستخدم غير موجود."));
                }
                string smsUrl = Settings.Default.SmsUrl;
                if (user.PhoneNumberConfirmed)
                {
                    return(Ok("تم التفعيل من قبل."));
                }
                await _repo.ReSendSmsConfirmation(smsUrl, user);

                return(Ok("تم ارسال كود التفعيل بنجاح."));
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
                ErrorSaver.SaveError(msg);
                return(BadRequest("ReSendConfirmationCode " + msg));
            }
        }
Exemplo n.º 3
0
        public async Task <IHttpActionResult> ResetPassword(ResetPasswordViewModel resetPasswordView)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }

                var user = await _repo.FindUserbyPhone(resetPasswordView.Phone);

                if (user == null)
                {
                    ModelState.AddModelError("", "Not Found");
                    return(BadRequest(ModelState));
                }
                var result = await _repo.ResetPassword(user.Id, resetPasswordView.Code, resetPasswordView.Password);

                var errorResult = GetErrorResult(result);

                if (errorResult != null)
                {
                    return(errorResult);
                }
                return(Ok());
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
                ErrorSaver.SaveError(msg);
                return(BadRequest("ResetPassword --- " + msg));
            }
        }
Exemplo n.º 4
0
        public async Task <IHttpActionResult> ChangePhone(PhoneViewModel phone)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                var userId = GetUserId();
                var user   = await GetApplicationUserById(userId);

                var result = await _repo.ChangePhone(user : user, phone : phone.Phone, code : phone.Code);

                if (result)
                {
                    return(Ok());
                }
                else
                {
                    ModelState.AddModelError("Invalid token", "Invalid token");
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                ErrorSaver.SaveError(ex.Message);
                return(BadRequest("ChangeStatus --- " + ex.Message));
            }
        }
Exemplo n.º 5
0
        public async Task <IHttpActionResult> ForgetPassword(ForgotPasswordViewModel forgotPasswordViewModel)
        {
            try
            {
                if (!ModelState.IsValid || forgotPasswordViewModel == null)
                {
                    return(BadRequest(ModelState));
                }

                var user = await _repo.FindUserbyPhone(forgotPasswordViewModel.Phone);

                if (user == null)
                {
                    ModelState.AddModelError("", "Not Found");
                    return(BadRequest(ModelState));
                }
                string smsUrl = Settings.Default.SmsUrl.ToString();
                await _repo.ForgetPasswordbyPhone(smsUrl, forgotPasswordViewModel.Phone);

                return(Ok());
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
                ErrorSaver.SaveError(msg);

                return(BadRequest("ForgetPassword --- " + msg));
            }
        }
Exemplo n.º 6
0
        public async Task <IHttpActionResult> ConfirmEmail(ConfirmViewModel confirmViewModel)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }
                var result = await _repo.ConfirmEmail(confirmViewModel.UserId, confirmViewModel.Code);

                if (result)
                {
                    return(Ok());
                }
                else
                {
                    ModelState.AddModelError("", "Invalid token");
                    return(BadRequest(ModelState));
                }
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
                ErrorSaver.SaveError(msg);
                return(BadRequest("ConfirmEmail --- " + msg));
            }
        }
Exemplo n.º 7
0
        public async Task <IHttpActionResult> TrackAgent(TrackViewModel model)
        {
            var request = _UnitOfWork.RequestRepository.GetbyId(model.RequestId);

            var key = ConfigurationManager.AppSettings["googleapis-map-key"];


            var res = _UnitOfWork.CityRepository.GetDifference(key, model.Latitude, model.Longitude, request.ToLatitude,
                                                               request.ToLongtitude);
            var result = System.Web.Helpers.Json.Decode(res);

            ErrorSaver.SaveError($"Log Model before {key}, {model.Latitude}, {model.Longitude}, {request.ToLatitude},{request.ToLongtitude}");


            decimal disanceinKilometers = result.rows[0] != null && result.rows[0].elements[0] != null && result.rows[0].elements[0].distance != null && result.rows[0].elements[0].distance.value != null ?
                                          result.rows[0].elements[0].distance.value : 0;

            model.Distance = disanceinKilometers;

            ErrorSaver.SaveError($"Distance before {disanceinKilometers}");

            if (model.Distance <= 100)
            {
                request.Status = RequestStatusEnum.Delivered;
                _UnitOfWork.RequestRepository.Updated(request);
                await _UnitOfWork.CommitAsync();

                ErrorSaver.SaveError($"Distance Less than 100 {disanceinKilometers}");
            }
            _notificationHub.MoveAgant(model);
            return(Ok(model));
        }
Exemplo n.º 8
0
        public async Task <ActionResult> Cancel(RefuseRequestViewModel search)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    Request old = _UnitOfWork.RequestRepository.GetbyId(search.Id);
                    if (old == null)
                    {
                        return(HttpNotFound());
                    }
                    ViewBag.Request = old;
                    PopulateRefuseResons();
                    return(View("Cancel", search));
                }
                var request = _UnitOfWork.RequestRepository.Find(search.Id);
                if (request == null)
                {
                    return(new HttpStatusCodeResult(404, "NotFound"));
                }

                if (request.Status != RequestStatusEnum.Inprogress)
                {
                    return(RedirectToAction("InProgress", "Requests").Error("لا يمكنك الغاء هذا الطلب ."));
                }

                request.Status = RequestStatusEnum.Canceled;

                _UnitOfWork.RefuseRequestsRepository.Create(new RefuseRequest()
                {
                    RequestId      = request.Id,
                    UserId         = request.UserId,
                    AgentId        = request.AgentId,
                    RefuseReasonId = search.RefuseReasonId,
                    Cause          = search.Cause
                });
                _UnitOfWork.Commit();

                var value = _UnitOfWork.RefuseReasonsRepository.All().FirstOrDefault(u => u.Id == search.RefuseReasonId);
                if (value != null)
                {
                    await SendNotification(request, NotificationType.RequestCancele.GetHashCode(), "", value.Value.ToString());
                }
                else
                {
                    await SendNotification(request, NotificationType.RequestCancele.GetHashCode(), "", "");
                }


                var message = string.Format("تم الغاء الطلب بنجاح .");
                return(RedirectToAction("InProgress", "Requests").Success(message));
            }
            catch (Exception e)
            {
                ErrorSaver.SaveError(e.Message);

                return(new HttpStatusCodeResult(404, "NotFound"));
            }
        }
Exemplo n.º 9
0
        public async void JoinToSpecificGroup(string group)
        {
            ErrorSaver.SaveError("Join To group -" + group);
            //logic creating group //userid1++"chat"idchat+userid2
            // Clients.Group(groupid);
            // Groups.Add(group, Context.ConnectionId);
            await Groups.Add(Context.ConnectionId, group);

            //Clients.All.agantMove("daDDDDDDDDDDDDDDDS");
        }
Exemplo n.º 10
0
        public async Task <IHttpActionResult> GetRequestDetails(EditRequestViewModel model)
        {
            try
            {
                var request = await _UnitOfWork.RequestRepository.GetRequestDetails(model.Id);

                if (request == null)
                {
                    return(BadRequest($"Request's User Is Removed"));
                }

                return(Ok(request));
            }
            catch (Exception ex)
            {
                ErrorSaver.SaveError(ex.Message);
                return(BadRequest(ex.Message));
            }
        }
Exemplo n.º 11
0
        public async Task <ActionResult> ApproveUser(string id)
        {
            try
            {
                var oldUser = await _repo.FindUserById(id);

                if (oldUser != null)
                {
                    var result = await _repo.UpdatePhoneNumberConfirmed(oldUser, true);

                    if (result.Succeeded)
                    {
                        var setting =
                            _UnitOfWork
                            .EmailSetting
                            .GetEmailSetting(EmailType.ActivateAgent.GetHashCode().ToString());


                        EmailManager.SendWelcomeEmail(EmailType.ActivateAgent.GetHashCode().ToString(),
                                                      oldUser.Email,
                                                      setting.MessageBodyAr.Replace("@FullName", oldUser.FullName));

                        return(Json("OK", JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        return(Json("NotFound", JsonRequestBehavior.AllowGet));
                    }
                }
                //return RedirectToAction("AgentsRequest").Error("هذا المندوب غير موجود .");

                return(Json("NotFound", JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                ErrorSaver.SaveError(ex.Message);

                return(Json("Error", JsonRequestBehavior.AllowGet));

                // return RedirectToAction("AgentsRequest").Error("حدث خطأ أثناء قبول المندوب.");
            }
        }
Exemplo n.º 12
0
        public async Task <IHttpActionResult> RegisterUser(UserViewModel viewModel)
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    return(BadRequest(ModelState));
                }


                string smsUrl = Settings.Default.SmsUrl.ToString();
                var    result =
                    await _repo.RegisterUser(smsUrl, viewModel.FullName,
                                             viewModel.PhoneNumber,
                                             viewModel.Email,
                                             viewModel.UserName,
                                             viewModel.Password
                                             );

                var errorResult = GetErrorResult(result);

                if (errorResult != null)
                {
                    return(errorResult);
                }

                var u = await _repo.FindUser(viewModel.UserName, viewModel.Password);

                //if(u!=null && !string.IsNullOrEmpty(u.Id))
                //    SendSms(viewModel.UserName,)

                return(Ok(u.Id));
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
                ErrorSaver.SaveError(ex.Message);
                return(BadRequest("Register " + msg));
            }
        }
Exemplo n.º 13
0
        public async Task <IHttpActionResult> AddPhone(string secondNumber)
        {
            try
            {
                var userId = GetUserId();
                var user   = await GetApplicationUserById(userId);

                await _repo.AddPhone(user, secondNumber);

                string smsUrl = Settings.Default.SmsUrl.ToString();

                var sent = await _repo.SendSmsConfirmation(smsUrl, user);


                return(Ok());
            }
            catch (Exception ex)
            {
                ErrorSaver.SaveError(ex.Message);
                return(BadRequest("ChangeStatus --- " + ex.Message));
            }
        }
Exemplo n.º 14
0
        public async Task <IHttpActionResult> GetUserInfo(DeviceSettingModel model)
        {
            try
            {
                var userName = User.Identity.GetUserName();
                var user     = await GetApplicationUser(userName);

                if (user == null)
                {
                    return(NotFound());
                }


                var roles = await _repo.GetUserRoles(user.Id);

                var agentStatisticsModel = new AgentStatisticsModel();
                if (roles.FirstOrDefault() == RolesEnum.Agent.ToString())
                {
                    agentStatisticsModel = await GetUserStatistic(user.Id);
                }

                model.ApplicationUserId = user.Id;


                var device =
                    _UnitOfWork.DeviceSettingRepository.All()
                    .Any(u => u.ApplicationUserId == model.ApplicationUserId && u.DeviceId == model.DeviceId);

                if (!device)
                {
                    var deviceModel = Mapper.Map <DeviceSettingModel, DeviceSetting>(model);
                    _UnitOfWork.DeviceSettingRepository.Create(deviceModel);
                    _UnitOfWork.Commit();
                }

                return(Ok(new UserEditViewmodel
                {
                    Id = user.Id,
                    UserName = user.UserName,
                    FullName = user.FullName,
                    Email = user.Email,
                    PhoneNumber = user.PhoneNumber,
                    Type = (int?)user.Type,
                    CityId = user.CityId,
                    PhotoUrl = user.PhotoUrl,
                    Address = user.Address,
                    CompanyName = user.Car != null ? user.Car.CompanyName : string.Empty,
                    CarType = user.Car != null ? user.Car.Type : string.Empty,
                    Model = user.Car != null ? user.Car.Model : string.Empty,
                    Color = user.Car != null ? user.Car.Color : string.Empty,
                    PlateNumber = user.Car != null ? user.Car.PlateNumber : string.Empty,
                    PassengerNumberId = user.Car?.PassengerNumberId,
                    IsSuspend = user.IsSuspend,
                    IsNotified = user.IsNotified,
                    Role = roles != null ? roles.First() : string.Empty,
                    AgentStatisticsModel = agentStatisticsModel
                }));
            }
            catch (Exception e)
            {
                ErrorSaver.SaveError(e.Message);
                return(BadRequest(e.Message));
            }
        }
Exemplo n.º 15
0
        public async Task <ActionResult> ApproveAgent(string id)
        {
            try
            {
                var oldUser = await _repo.FindUserById(id);

                if (oldUser != null)
                {
                    var result = await _repo.UpdatePhoneNumberConfirmed(oldUser, true);

                    if (result.Succeeded)
                    {
                        var setting =
                            _UnitOfWork
                            .EmailSetting
                            .GetEmailSetting(EmailType.ActivateAgent.GetHashCode().ToString());


                        EmailManager.SendWelcomeEmail(EmailType.ActivateAgent.GetHashCode().ToString(),
                                                      oldUser.Email,
                                                      setting.MessageBodyAr.Replace("@FullName", oldUser.FullName));

                        return(Json("OK", JsonRequestBehavior.AllowGet));
                    }
                    else
                    {
                        return(Json("NotFound", JsonRequestBehavior.AllowGet));
                    }

                    //await _repo.GenerateToken(id, EmailType.EmailConfirmation);

                    //var setting =
                    //    _UnitOfWork.EmailSetting.GetEmailSetting(EmailType.EmailConfirmation.GetHashCode().ToString());
                    //EmailManager EmailManager = new EmailManager();

                    // string smsUrl = Settings.Default.SmsUrl.ToString();


                    ////var sent = await _repo.SendSmsConfirmation(smsUrl, oldUser);
                    ////if (!sent)
                    ////{
                    ////    return Json("MessageNotSent", JsonRequestBehavior.AllowGet);
                    ////}



                    // var result = await _UnitOfWork.CommitAsync();

                    //return RedirectToAction("AgentsRequest").Success("تم قبول المندوب بنجاح.");
                }
                //return RedirectToAction("AgentsRequest").Error("هذا المندوب غير موجود .");

                return(Json("NotFound", JsonRequestBehavior.AllowGet));
            }
            catch (Exception ex)
            {
                ErrorSaver.SaveError(ex.Message);

                return(Json("Error", JsonRequestBehavior.AllowGet));

                // return RedirectToAction("AgentsRequest").Error("حدث خطأ أثناء قبول المندوب.");
            }
        }