Пример #1
0
 public Response <MessageDTO> Post([FromBody] MessageDTO msg)
 {
     try
     {
         using (VDEntities entities = new VDEntities())
         {
             if (!string.IsNullOrEmpty(msg.SMS) && !string.IsNullOrEmpty(msg.MobileNumber))
             {
                 var dbReceiver = entities.Users.Where(x => x.MobileNumber == msg.MobileNumber).FirstOrDefault();
                 if (dbReceiver != null)
                 {
                     var response = UserSMS.SendSMS(dbReceiver.CountryCode, dbReceiver.MobileNumber, "", msg.SMS);
                     UserSMS.addMessageToDB(dbReceiver.MobileNumber, response, msg.SMS, dbReceiver.ID);
                     return(new Response <MessageDTO>(true, null, null));
                 }
                 else
                 {
                     return(new Response <MessageDTO>(false, "The number " + msg.MobileNumber + " does not exist in our records", null));
                 }
             }
             else
             {
                 return(new Response <MessageDTO>(false, "Please fill sms and mobile number text fields", null));
             }
         }
     }
     catch (Exception ex)
     {
         return(new Response <MessageDTO>(false, GetMessageFromExceptionObject(ex), null));
     }
 }
        public Response <IEnumerable <ScheduleDTO> > SendSMSAlertToParent(int GapDays, int OnlineClinicId)
        {
            try
            {
                using (VDEntities entities = new VDEntities())
                {
                    List <Schedule> Schedules  = GetAlertData(GapDays, OnlineClinicId, entities);
                    var             dbChildren = Schedules.Select(x => x.Child).Distinct().ToList();
                    foreach (var child in dbChildren)
                    {
                        var      dbSchedules  = Schedules.Where(x => x.ChildId == child.ID).ToList();
                        var      doseName     = "";
                        DateTime scheduleDate = new DateTime();
                        foreach (var schedule in dbSchedules)
                        {
                            doseName    += schedule.Dose.Name + ", ";
                            scheduleDate = schedule.Date;
                        }
                        UserSMS.ParentSMSAlert(doseName, scheduleDate, child);
                    }

                    List <ScheduleDTO> scheduleDtos = Mapper.Map <List <ScheduleDTO> >(Schedules);
                    return(new Response <IEnumerable <ScheduleDTO> >(true, null, scheduleDtos));
                }
            }
            catch (Exception ex)
            {
                return(new Response <IEnumerable <ScheduleDTO> >(false, GetMessageFromExceptionObject(ex), null));
            }
        }
        public Response <DoctorDTO> Post(DoctorDTO doctorDTO)
        {
            try
            {
                TextInfo textInfo = new CultureInfo("en-US", false).TextInfo;
                doctorDTO.FirstName   = textInfo.ToTitleCase(doctorDTO.FirstName);
                doctorDTO.LastName    = textInfo.ToTitleCase(doctorDTO.LastName);
                doctorDTO.DisplayName = textInfo.ToTitleCase(doctorDTO.DisplayName);
                using (VDEntities entities = new VDEntities())
                {
                    // 1- send email to doctor
                    UserEmail.DoctorEmail(doctorDTO);

                    // 2- save User first
                    User userDB = new User();
                    userDB.MobileNumber = doctorDTO.MobileNumber;
                    userDB.Password     = doctorDTO.Password;
                    userDB.CountryCode  = doctorDTO.CountryCode;
                    userDB.UserType     = "DOCTOR";
                    entities.Users.Add(userDB);
                    entities.SaveChanges();

                    // 2- save Doctor
                    Doctor doctorDB = Mapper.Map <Doctor>(doctorDTO);
                    doctorDB.ValidUpto = null;
                    doctorDB.UserID    = userDB.ID;
                    entities.Doctors.Add(doctorDB);
                    entities.SaveChanges();
                    doctorDTO.ID = doctorDB.ID;

                    //generate SMS and save it to the db
                    UserSMS.DoctorSMS(doctorDTO);

                    // 4- check if clinicDto exsist; then save clinic as well
                    if (doctorDTO.ClinicDTO != null && !String.IsNullOrEmpty(doctorDTO.ClinicDTO.Name))
                    {
                        doctorDTO.ClinicDTO.Name = textInfo.ToTitleCase(doctorDTO.ClinicDTO.Name);

                        doctorDTO.ClinicDTO.DoctorID = doctorDB.ID;

                        Clinic clinicDB = Mapper.Map <Clinic>(doctorDTO.ClinicDTO);
                        entities.Clinics.Add(clinicDB);
                        entities.SaveChanges();

                        doctorDTO.ClinicDTO.ID = clinicDB.ID;
                    }
                }
                return(new Response <DoctorDTO>(true, null, doctorDTO));
            }
            catch (Exception ex)
            {
                return(new Response <DoctorDTO>(false, GetMessageFromExceptionObject(ex), null));
            }
        }
Пример #4
0
        public Response <UserDTO> ForgotPassword(UserDTO userDTO)
        {
            try
            {
                using (VDEntities entities = new VDEntities())
                {
                    var dbUser = entities.Users.Where(x => x.MobileNumber == userDTO.MobileNumber)
                                 .Where(x => x.CountryCode == userDTO.CountryCode)
                                 .Where(ut => ut.UserType == userDTO.UserType).FirstOrDefault();

                    if (dbUser == null)
                    {
                        return(new Response <UserDTO>(false, "Invalid Mobile Number", null));
                    }

                    if (dbUser.UserType.Equals("DOCTOR"))
                    {
                        var doctorDb = entities.Doctors.Where(x => x.UserID == dbUser.ID).FirstOrDefault();
                        if (doctorDb == null)
                        {
                            return(new Response <UserDTO>(false, "Invalid Mobile Number", null));
                        }
                        else
                        {
                            UserEmail.DoctorForgotPassword(doctorDb);
                            UserSMS.DoctorForgotPasswordSMS(doctorDb);
                            return(new Response <UserDTO>(true, "your password has been sent to your mobile number and email address", null));
                        }
                    }
                    else if (dbUser.UserType.Equals("PARENT"))
                    {
                        var childDB = entities.Children.Where(x => x.UserID == dbUser.ID).FirstOrDefault();
                        if (childDB == null)
                        {
                            return(new Response <UserDTO>(false, "Invalid Mobile Number", null));
                        }
                        else
                        {
                            UserEmail.ParentForgotPassword(childDB);
                            UserSMS.ParentForgotPasswordSMS(childDB);
                            return(new Response <UserDTO>(true, "your password has been sent to your mobile number and email address", null));
                        }
                    }
                    else
                    {
                        return(new Response <UserDTO>(false, "Please contact with admin", null));
                    }
                }
            }
            catch (Exception e)
            {
                return(new Response <UserDTO>(false, GetMessageFromExceptionObject(e), null));
            }
        }
        public Response <IEnumerable <ScheduleDTO> > SendSMSAlertToOneChild(int GapDays, int childId)
        {
            try
            {
                using (VDEntities entities = new VDEntities())
                {
                    IEnumerable <Schedule> Schedules = new List <Schedule>();
                    DateTime AddedDateTime           = DateTime.UtcNow.AddHours(5).AddDays(GapDays);
                    DateTime pakistanDate            = DateTime.UtcNow.AddHours(5).Date;
                    if (GapDays == 0)
                    {
                        Schedules = entities.Schedules.Include("Child").Include("Dose")
                                    .Where(sc => sc.ChildId == childId)
                                    .Where(sc => sc.Date == pakistanDate)
                                    .Where(sc => sc.IsDone == false)
                                    .OrderBy(x => x.Child.ID).ThenBy(y => y.Date).ToList <Schedule>();
                    }
                    if (GapDays > 0)
                    {
                        Schedules = entities.Schedules.Include("Child").Include("Dose")
                                    .Where(sc => sc.ChildId == childId)
                                    .Where(sc => sc.IsDone == false)
                                    .Where(sc => sc.Date >= pakistanDate && sc.Date <= AddedDateTime)
                                    .OrderBy(x => x.Child.ID).ThenBy(y => y.Date).ToList <Schedule>();
                    }
                    if (GapDays < 0)
                    {
                        Schedules = entities.Schedules.Include("Child").Include("Dose")
                                    .Where(sc => sc.ChildId == childId)
                                    .Where(sc => sc.IsDone == false)
                                    .Where(sc => sc.Date <= pakistanDate && sc.Date >= AddedDateTime)
                                    .OrderBy(x => x.Child.ID).ThenBy(y => y.Date).ToList <Schedule>();
                    }

                    var      doseName     = "";
                    DateTime scheduleDate = new DateTime();
                    var      dbChild      = entities.Children.Where(x => x.ID == childId).FirstOrDefault();
                    foreach (var schedule in Schedules)
                    {
                        doseName    += schedule.Dose.Name.Trim() + ", ";
                        scheduleDate = schedule.Date;
                    }
                    UserSMS.ParentSMSAlert(doseName, scheduleDate, dbChild);

                    List <ScheduleDTO> scheduleDtos = Mapper.Map <List <ScheduleDTO> >(Schedules);
                    return(new Response <IEnumerable <ScheduleDTO> >(true, null, scheduleDtos));
                }
            }
            catch (Exception ex)
            {
                return(new Response <IEnumerable <ScheduleDTO> >(false, GetMessageFromExceptionObject(ex), null));
            }
        }
 public Response <FollowUpDTO> SendSMSAlertToOneChild(int childId)
 {
     try
     {
         using (VDEntities entities = new VDEntities())
         {
             var dbChildFollowup = entities.FollowUps.Where(x => x.ChildID == childId).OrderByDescending(x => x.ID).FirstOrDefault();
             UserSMS.ParentFollowUpSMSAlert(dbChildFollowup);
             FollowUpDTO followupDTO = Mapper.Map <FollowUpDTO>(dbChildFollowup);
             return(new Response <FollowUpDTO>(true, null, followupDTO));
         }
     }
     catch (Exception ex)
     {
         return(new Response <FollowUpDTO>(false, GetMessageFromExceptionObject(ex), null));
     }
 }
        public Response <List <FollowUpDTO> > SendSMSAlertToAllChildren(int GapDays, int doctorId)
        {
            try
            {
                using (VDEntities entities = new VDEntities())
                {
                    DateTime        AddedDateTime = DateTime.UtcNow.AddHours(5).AddDays(GapDays);
                    List <FollowUp> dbFollowUps   = new List <FollowUp>();
                    if (GapDays == 0)
                    {
                        dbFollowUps = entities.FollowUps.Where(x => x.DoctorID == doctorId &&
                                                               x.NextVisitDate == DateTime.UtcNow.AddHours(5).Date)
                                      .OrderByDescending(x => x.ID).ToList();
                    }
                    if (GapDays > 0)
                    {
                        dbFollowUps = entities.FollowUps.Where(x => x.DoctorID == doctorId &&
                                                               x.NextVisitDate >= DateTime.UtcNow.AddHours(5).Date&& x.NextVisitDate <= AddedDateTime)
                                      .OrderByDescending(x => x.ID).ToList();
                    }
                    if (GapDays < 0)
                    {
                        dbFollowUps = entities.FollowUps.Where(x => x.DoctorID == doctorId &&
                                                               x.NextVisitDate <= DateTime.UtcNow.AddHours(5).Date&& x.NextVisitDate >= AddedDateTime)
                                      .OrderByDescending(x => x.ID).ToList();
                    }

                    foreach (FollowUp followup in dbFollowUps)
                    {
                        UserSMS.ParentFollowUpSMSAlert(followup);
                    }
                    List <FollowUpDTO> dbFollowDTOs = Mapper.Map <List <FollowUpDTO> >(dbFollowUps);
                    return(new Response <List <FollowUpDTO> >(true, null, dbFollowDTOs));
                }
            }
            catch (Exception ex)
            {
                return(new Response <List <FollowUpDTO> >(false, GetMessageFromExceptionObject(ex), null));
            }
        }
        public string AlipayNotify()
        {
            HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];
            HttpRequestBase request = context.Request;
            SortedDictionary <string, string> sPara = GetRequestPost();

            if (sPara.Count > 0)//判断是否有带返回参数
            {
                Notify aliNotify    = new Notify();
                bool   verifyResult = aliNotify.Verify(sPara, request["notify_id"], request["sign"]);

                if (verifyResult)//验证成功
                {
                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                    //请在这里加上商户的业务逻辑程序代码


                    //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
                    //获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

                    //商户订单号
                    string out_trade_no = request["out_trade_no"];

                    //支付宝交易号
                    string trade_no = request["trade_no"];

                    //交易状态
                    string trade_status = request["trade_status"];


                    if (request["trade_status"] == "TRADE_FINISHED")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        //注意:
                        //退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知
                        //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的

                        using (Entity entity = new Entity())
                        {
                            Order order = entity.Order.Find(out_trade_no);
                            if ((order.State & 2) == 0)
                            {
                                order.State |= 2;
                                OrderDetailsModel orderDetailsModel = Newtonsoft.Json.JsonConvert.DeserializeObject <OrderDetailsModel>(order.Detail);
                                foreach (var v in orderDetailsModel.OrderDetailModelList)
                                {
                                    entity.Good.Find(v.GoodID).SalesVolume++;
                                    entity.GoodChild.Find(v.GoodChildID).SalesVolume++;
                                }
                                OrderLog orderLog = new OrderLog();
                                orderLog.OrderID    = order.OrderID;
                                orderLog.State      = 2;
                                orderLog.CreateTime = DateTime.Now;
                                orderLog.Mark       = "支付宝返回成功";
                                entity.OrderLog.Add(orderLog);
                                order.OrderExtend.ThirdPartyPaymentNumber = trade_no;

                                entity.SaveChanges();
                            }
                        }
                    }
                    else if (request["trade_status"] == "TRADE_SUCCESS")
                    {
                        //判断该笔订单是否在商户网站中已经做过处理
                        //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
                        //如果有做过处理,不执行商户的业务程序

                        //注意:
                        //付款完成后,支付宝系统发送该交易状态通知
                        //请务必判断请求时的total_fee、seller_id与通知时获取的total_fee、seller_id为一致的

                        using (Entity entity = new Entity())
                        {
                            Order order = entity.Order.Find(out_trade_no);
                            if ((order.State & 2) == 0)
                            {
                                order.State |= 2;
                                OrderDetailsModel orderDetailsModel = Newtonsoft.Json.JsonConvert.DeserializeObject <OrderDetailsModel>(order.Detail);
                                foreach (var v in orderDetailsModel.OrderDetailModelList)
                                {
                                    entity.Good.Find(v.GoodID).SalesVolume++;
                                    entity.GoodChild.Find(v.GoodChildID).SalesVolume++;
                                }
                                OrderLog orderLog = new OrderLog();
                                orderLog.OrderID    = order.OrderID;
                                orderLog.State      = 2;
                                orderLog.CreateTime = DateTime.Now;
                                orderLog.Mark       = "支付宝返回成功";
                                entity.OrderLog.Add(orderLog);
                                order.OrderExtend.ThirdPartyPaymentNumber = trade_no;
                                entity.SaveChanges();
                                ThreadPool.QueueUserWorkItem(delegate(object a)
                                {
                                    string tt       = @"有用户已经支付订单 " + order.OrderID + "金额 " + order.OrderExtend.PaymentPrice + " 请尽快发货";
                                    UserSMS userSMS = new UserSMS()
                                    {
                                        Tel = ConfigurationManager.AppSettings["SMSAdmin"]
                                    };
                                    Random random        = new Random();
                                    userSMS.SerialNumber = DateTime.Now.ToString("yyyyMMddhhmmssfff" + random.Next(100, 999).ToString());
                                    string bb            = SMS.sendSMS(userSMS.Tel, tt, userSMS.SerialNumber);
                                });
                            }
                        }
                    }
                    else
                    {
                        OrderLog orderLog = new OrderLog();
                        orderLog.OrderID = out_trade_no;

                        orderLog.CreateTime = DateTime.Now;
                        orderLog.Mark       = "支付宝返回" + request["trade_status"];

                        using (Entity entity = new Entity())
                        {
                            entity.OrderLog.Add(orderLog);
                            entity.SaveChanges();
                        }
                    }

                    //——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

                    return("success");  //请不要修改或删除

                    /////////////////////////////////////////////////////////////////////////////////////////////////////////////
                }
                else//验证失败
                {
                    return("fail");
                }
            }
            else
            {
                return("无通知参数");
            }
        }
        protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
        {
            try
            {
                using (Entity entity = new Entity())
                {
                    var order = entity.Order.Find(DetailsView1.DataKey.Value.ToString());

                    var CheckBoxList_State = ((CheckBoxList)DetailsView1.FindControl("CheckBoxList_State"));
                    order.State = 0;
                    int fahuoTemp = order.State & 4;
                    foreach (ListItem item in CheckBoxList_State.Items)
                    {
                        if (item.Selected)
                        {
                            order.State = order.State | Convert.ToInt32(item.Value);
                        }
                    }

                    if (fahuoTemp == 0)
                    {
                        if ((order.State & 4) > 0)
                        {
                            OrderLog orderLog = new OrderLog();
                            orderLog.OrderID    = order.OrderID;
                            orderLog.State      = 2;
                            orderLog.CreateTime = DateTime.Now;
                            orderLog.Mark       = "卖家发货";
                            orderLog.UserId     = Convert.ToInt32(Session["userID"]);
                            entity.OrderLog.Add(orderLog);
                            if (order.UserID != null)
                            {
                                string text = string.Format("您的订单{0}已经发货", order.OrderID);
                                UserLetterBLL.Create(Convert.ToInt32(Session["userID"]), order.UserID.Value, text, 1 | 8);

                                ThreadPool.QueueUserWorkItem(delegate(object a)
                                {
                                    string tt = @"您的订单 " + order.OrderID + " 已经发货,不日则到。请注意查收您的订单 ";
                                    using (Entity entity1 = new Entity())
                                    {
                                        UserSMS userSMS = new UserSMS()
                                        {
                                            Tel = entity1.User.Find(order.UserID).Tel
                                        };

                                        string bb = SMS.sendSMS(userSMS.Tel, tt, userSMS.SerialNumber);
                                    }
                                });
                            }
                        }
                    }


                    var DropDownList1 = ((DropDownList)DetailsView1.FindControl("DropDownList1"));
                    order.LogisticsCompany = DropDownList1.SelectedValue;
                    if (e.NewValues["LogisticsNumber"] != null)
                    {
                        order.LogisticsNumber = e.NewValues["LogisticsNumber"].ToString();
                    }
                    order.UpdateTime = DateTime.Now;

                    entity.SaveChanges();

                    Response.Redirect("OrderDetail.aspx?OrderID=" + order.OrderID);
                }
            }
            catch (Exception exception)
            {
                string error = exception.GetErrorMessage().Replace("'", "\\'").Replace("\"", "\\\"").Replace("\r\n", "\\r\\n");
                ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", string.Format("<script>alert('{0}')</script>", error));
            }
        }