private void ConsultarAnosDisponiveis(HttpContext context)
        {
            AgendasAno                 agendasAno = new AgendasAno();
            JavaScriptSerializer       serializer = new JavaScriptSerializer();
            ReturnJSON <List <Int32> > returnJSON = new ReturnJSON <List <Int32> >();
            String retorno = null;

            try
            {
                List <Int32> anosDisponiveis = new AgendasAnoRepository().AnosDisponiveis();
                returnJSON.Entity           = anosDisponiveis;
                returnJSON.ReturnCode       = Enum.GetName(typeof(ReturnType), ReturnType.SUCCESS);
                context.Response.StatusCode = 200;
            }
            catch (Exception e)
            {
                Log.Create(e);
                Email.Send("Agendamento de congelação - falha na aplicação", e);
                returnJSON.Message          = "Não foi possível recuperar os registros.";
                returnJSON.ReturnCode       = Enum.GetName(typeof(ReturnType), ReturnType.ERROR);
                context.Response.StatusCode = 500;
            }

            retorno = serializer.Serialize(returnJSON);
            context.Response.ContentType     = "text/json";
            context.Response.ContentEncoding = Encoding.UTF8;
            context.Response.Write(retorno);
        }
Пример #2
0
        public JsonResult DeleteMessage(int messageID)
        {
            CheckUserData(out int userID, out int userAccess);
            ReturnJSON returnJSON = new ReturnJSON()
            {
                isOK = false,
                msg  = string.Empty
            };

            if (userID == 0)
            {
                returnJSON.msg += "<br/> * 請先登入";
            }
            else
            {
                try
                {
                    var message = messageBoardEntities.Message.Find(messageID);
                    message.MessageStatus = false;
                    messageBoardEntities.SaveChanges();
                    returnJSON.msg  = "文章刪除成功";
                    returnJSON.isOK = true;
                }
                catch (Exception err)
                {
                    LogTool.DoErrorLog($"#{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff")}:{err.Message}\r\n");
                    returnJSON.msg += "<br/> * 刪除文章時發生錯誤";
                }
            }

            return(Json(returnJSON, JsonRequestBehavior.AllowGet));
        }
        private void ConsultarAgendasAno(HttpContext context)
        {
            AgendasAno              agendasAno = new AgendasAno();
            JavaScriptSerializer    serializer = new JavaScriptSerializer();
            ReturnJSON <AgendasAno> returnJSON = new ReturnJSON <AgendasAno>();
            String retorno = null;

            try
            {
                String json = new StreamReader(context.Request.InputStream).ReadToEnd();
                agendasAno = (AgendasAno)serializer.Deserialize <AgendasAno>(json);
                agendasAno = new AgendasAnoRepository().ObterAgendasAno(new AgendasAno()
                {
                    Ano = agendasAno.Ano
                });

                returnJSON.Entity           = agendasAno;
                returnJSON.ReturnCode       = Enum.GetName(typeof(ReturnType), ReturnType.SUCCESS);
                context.Response.StatusCode = 200;
            }
            catch (Exception e)
            {
                Log.Create(e);
                Email.Send("Agendamento de congelação - falha na aplicação", e);
                returnJSON.Message          = "Não foi possível recuperar os registros.";
                returnJSON.ReturnCode       = Enum.GetName(typeof(ReturnType), ReturnType.ERROR);
                context.Response.StatusCode = 500;
            }

            retorno = serializer.Serialize(returnJSON);
            context.Response.ContentType     = "text/json";
            context.Response.ContentEncoding = Encoding.UTF8;
            context.Response.Write(retorno);
        }
Пример #4
0
        public JsonResult AddMessage(string content, int majorID)
        {
            CheckUserData(out int userID, out int userAccess);
            List <HttpPostedFileBase> postFile = new List <HttpPostedFileBase>();
            ReturnJSON returnJSON = new ReturnJSON()
            {
                isOK = false,
                msg  = string.Empty
            };

            returnJSON.msg = CheckCreateMesaage(content, userID);
            if (Request.Files.Count > 0)
            {
                postFile.Add(Request.Files[0]);
                var fileCheck = PicTool.CheckUplaodFiles(postFile[0], @"\.(?i:jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga|svg|jpeg2000)$", 1);
                if (!fileCheck.Item1)
                {
                    foreach (var item in fileCheck.Item2)
                    {
                        returnJSON.msg += $"<br/> * {item}";
                    }
                }
            }

            if (string.IsNullOrWhiteSpace(returnJSON.msg))
            {
                try
                {
                    Message message;
                    if (majorID == 0)   // 建立新主題
                    {
                        MajorMessageList majorMessage = InsertMajorMessage(userID);
                        InsertMessage(content, userID, majorMessage.MajorID, out message);
                    }
                    else
                    {                   // 回覆留言
                        InsertMessage(content, userID, majorID, out message);
                    }

                    // 儲存圖片
                    if (postFile.Count > 0)
                    {
                        PicTool.SaveMessagePic(postFile[0], userID, message.MessageID);
                    }

                    returnJSON.isOK = true;
                    returnJSON.msg  = "文章新增成功";
                }
                catch (Exception err)
                {
                    LogTool.DoErrorLog($"#{DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff")}:{err.Message}\r\n");
                    returnJSON.msg = "<br/> * 儲存時發生錯誤";
                }
            }

            return(Json(returnJSON, JsonRequestBehavior.AllowGet));
        }
        public JsonResult isUserLogined()
        {
            var        userLogin  = userTool.GetLoginedUser(HttpContext.Request);
            ReturnJSON returnJSON = new ReturnJSON()
            {
                isOK = userLogin != null,
                msg  = userLogin == null ? "使用者已經被登出" : ""
            };

            return(Json(returnJSON, JsonRequestBehavior.AllowGet));
        }
        public JsonResult UserCheck(string pw)
        {
            pw = HttpUtility.UrlDecode(pw);
            var        userCheckResult = userTool.UserPWCorrect(HttpContext.Request, pw);
            ReturnJSON returnJSON      = new ReturnJSON()
            {
                isOK = userCheckResult.Item1,
                data = userCheckResult.Item2?.Select(r => new { r.UserIcon, r.UserID, r.UserName, r.UserEmail }),
                msg  = userCheckResult.Item1 ? "密碼檢驗正確" : "密碼檢驗失敗"
            };

            return(Json(returnJSON, JsonRequestBehavior.AllowGet));
        }
Пример #7
0
        public JsonResult CheckUserNameEmail(string userName, string userEmail)
        {
            ReturnJSON returnJSON = new ReturnJSON()
            {
                isOK = false,
                msg  = string.Empty
            };

            returnJSON.isOK = userTool.isUserEmailExist(HttpUtility.UrlDecode(userName),
                                                        HttpUtility.UrlDecode(userEmail));
            returnJSON.msg = returnJSON.isOK ? "匹配正確,請重新設定密碼" : "使用者名稱和信箱並不匹配";
            return(Json(returnJSON, JsonRequestBehavior.AllowGet));
        }
Пример #8
0
        public ActionResult UserRegister(string userAccount, string userPW1, string userPW2, string userEmail)
        {
            ReturnJSON    returnJSON   = new ReturnJSON();
            List <string> errorList    = new List <string>();
            bool          isRegisterOK = false;
            string        returnMsg    = "註冊失敗";

            if (Request.Files.Count == 0)
            {
                errorList.Add("請上傳頭像圖檔");
            }
            else
            {
                HttpPostedFileBase postFile = Request.Files[0];
                var fileCheck = PicTool.CheckUplaodFiles(postFile, @"\.(?i:jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga|svg|jpeg2000)$", 1);
                if (!fileCheck.Item1)
                {
                    foreach (var item in fileCheck.Item2)
                    {
                        errorList.Add(item);
                    }
                }
            }

            if (!errorList.Any())
            {
                HttpPostedFileBase postFile = Request.Files[0];
                userAccount = HttpUtility.UrlDecode(userAccount);
                userPW1     = HttpUtility.UrlDecode(userPW1);
                userPW2     = HttpUtility.UrlDecode(userPW2);
                userEmail   = HttpUtility.UrlDecode(userEmail);
                var registerResult = userTool.RegisterUser(userAccount, userPW1, userPW2, userEmail);
                isRegisterOK = registerResult.Item1;
                errorList    = registerResult.Item2;
                returnMsg    = registerResult.Item3;

                if (registerResult.Item1)
                {
                    PicTool.SaveUserPic(postFile, registerResult.Item4.UserID);
                }
            }

            returnJSON = new ReturnJSON()
            {
                isOK      = isRegisterOK,
                errorList = errorList,
                msg       = returnMsg
            };

            return(Json(returnJSON));
        }
Пример #9
0
        public ActionResult CheckUserEmail(string userEmail)
        {
            if (userEmail == null || userEmail == "")
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            ReturnJSON returnJSON = new ReturnJSON()
            {
                isOK = userTool.isNotExistEmail(HttpUtility.UrlDecode(userEmail))
            };

            return(Json(returnJSON, JsonRequestBehavior.AllowGet));
        }
        private void Salvar(HttpContext context)
        {
            Model.Entities.MedicoExecucaoAgenda medicoExecucaoAgenda = new Model.Entities.MedicoExecucaoAgenda();

            JavaScriptSerializer serializer = new JavaScriptSerializer();
            ReturnJSON <Model.Entities.MedicoExecucaoAgenda> returnJSON = new ReturnJSON <Model.Entities.MedicoExecucaoAgenda>();
            String retorno = null;

            try
            {
                String json = new StreamReader(context.Request.InputStream).ReadToEnd();
                medicoExecucaoAgenda = (Model.Entities.MedicoExecucaoAgenda)serializer.Deserialize <Model.Entities.MedicoExecucaoAgenda>(json);

                // Registro em edição?
                if (medicoExecucaoAgenda.MedicoExecucaoAgendaID.HasValue && medicoExecucaoAgenda.MedicoExecucaoAgendaID > 0)
                {
                    new MedicoExecucaoAgendaRepository().Update(medicoExecucaoAgenda);
                }
                else
                {
                    new MedicoExecucaoAgendaRepository().Create(medicoExecucaoAgenda);
                }

                returnJSON.Message          = "Registro salvo com sucesso.";
                returnJSON.ReturnCode       = Enum.GetName(typeof(ReturnType), ReturnType.SUCCESS);
                context.Response.StatusCode = 201;
            }
            catch (Exception e)
            {
                Log.Create(e);
                Email.Send("Agendamento de congelação - falha na aplicação", e);
                returnJSON.Message          = "Não foi possível salvar o registro.";
                returnJSON.ReturnCode       = Enum.GetName(typeof(ReturnType), ReturnType.ERROR);
                context.Response.StatusCode = 500;
            }

            retorno = serializer.Serialize(returnJSON);
            context.Response.ContentType     = "text/json";
            context.Response.ContentEncoding = Encoding.UTF8;
            context.Response.Write(retorno);
        }
Пример #11
0
        public JsonResult GetUniqueMessage(int messageID)
        {
            CheckUserData(out int userID, out int userAccess);
            ReturnJSON returnJSON = new ReturnJSON()
            {
                isOK = true,
                msg  = string.Empty
            };

            if (userID == 0)
            {
                returnJSON.isOK = false;
                returnJSON.msg += "<br/> * 請先登入";
            }

            var message = (from m in messageBoardEntities.Message
                           where m.MessageID == messageID && m.CreateUserID == userID
                           select new
            {
                m.MajorID,
                m.MessageID,
                m.Message1,
                pics = from pic in messageBoardEntities.MessagePic
                       where pic.MessageID == messageID && pic.picStatus
                       select new
                {
                    pic.PicID,
                    pic.PicURL
                }
            });

            returnJSON.data = message;
            if (!message.Any())
            {
                returnJSON.isOK = false;
                returnJSON.msg += "<br/> * 找不到指定文章";
            }

            return(Json(returnJSON, JsonRequestBehavior.AllowGet));
        }
Пример #12
0
        public JsonResult ResetPW(string userName, string userEmail, string pw1, string pw2)
        {
            userName  = HttpUtility.UrlDecode(userName);
            userEmail = HttpUtility.UrlDecode(userEmail);
            pw1       = HttpUtility.UrlDecode(pw1);
            pw2       = HttpUtility.UrlDecode(pw2);
            ReturnJSON returnJSON = new ReturnJSON()
            {
                isOK = false,
                msg  = "更新密碼發生非預期的錯誤"
            };

            if (pw1 != pw2)
            {
                returnJSON.msg = "前後兩次密碼輸入不一致";
            }
            else if (userTool.isSetNewPW(userName, userEmail, pw1))
            {
                returnJSON.msg  = "更新密碼成功,返回登入頁重新登入";
                returnJSON.isOK = true;
            }

            return(Json(returnJSON, JsonRequestBehavior.AllowGet));
        }
        public JsonResult SavePorfile(string pw1, string pw2, int userID)
        {
            pw1 = HttpUtility.UrlDecode(pw1);
            pw2 = HttpUtility.UrlDecode(pw2);
            var        userLogin  = userTool.GetLoginedUser(HttpContext.Request).FirstOrDefault();
            string     dgMsg      = "儲存成功";
            bool       isCatch    = false;
            ReturnJSON returnJSON = new ReturnJSON()
            {
                isOK = false,
                msg  = "發生未預期的錯誤"
            };

            try
            {
                if (pw1 != pw2)
                {
                    dgMsg += "<br/> * 前後兩次密碼輸入不一致";
                }
                else if (userTool.isSetNewPW(userLogin.UserName, userLogin.UserEmail, pw1))
                {
                    dgMsg          += "<br/> * 更新密碼成功";
                    returnJSON.isOK = true;
                }
            }
            catch (Exception)
            {
                isCatch = true;
            }

            try
            {
                if (Request.Files.Count > 0)
                {
                    bool isFileCorrect          = true;
                    HttpPostedFileBase postFile = Request.Files[0];
                    var fileCheck = PicTool.CheckUplaodFiles(postFile, @"\.(?i:jpg|bmp|gif|ico|pcx|jpeg|tif|png|raw|tga|svg|jpeg2000)$", 1);
                    if (!fileCheck.Item1)
                    {
                        isFileCorrect = false;
                        foreach (var item in fileCheck.Item2)
                        {
                            dgMsg += $"<br/> * {item}";
                        }
                    }

                    if (isFileCorrect)
                    {
                        returnJSON.isOK = true;
                        dgMsg          += "<br/> * 頭像更新成功";
                        PicTool.SaveUserPic(postFile, userLogin.UserID);
                    }
                }

                returnJSON.isOK = true;
            }
            catch (Exception)
            {
                isCatch = true;
            }

            returnJSON.msg = isCatch ? returnJSON.msg : dgMsg;
            return(Json(returnJSON));
        }
Пример #14
0
        private void Salvar(HttpContext context)
        {
            Model.Entities.Agenda agenda = new Model.Entities.Agenda();

            JavaScriptSerializer serializer = new JavaScriptSerializer();
            ReturnJSON <Model.Entities.Agenda> returnJSON = new ReturnJSON <Model.Entities.Agenda>();
            String retorno = null;

            try
            {
                String json = new StreamReader(context.Request.InputStream).ReadToEnd();
                agenda = (Model.Entities.Agenda)serializer.Deserialize <Model.Entities.Agenda>(json);

                // Recupera novamente o EstadoAgenda, pois no client/browser só foi possível enviar o seu ID.
                agenda.EstadoAgenda =
                    new EstadoAgendaRepository()
                    .Details(new EstadoAgenda()
                {
                    EstadoAgendaID = agenda.EstadoAgenda.EstadoAgendaID
                });

                // Recupera novamente o MedicoExecucaoAgenda, pois no client/browser só foi possível enviar o seu ID.
                agenda.MedicoExecucaoAgenda =
                    new MedicoExecucaoAgendaRepository()
                    .Details(new MedicoExecucaoAgenda()
                {
                    MedicoExecucaoAgendaID = agenda.MedicoExecucaoAgenda.MedicoExecucaoAgendaID
                });

                if (!agenda.DataHoraEhNoiteOuFimSemana(agenda.DataHoraEvento.Value))
                {
                    returnJSON.Message    = "O agendamento da congelação <b>não</b> pode ser realizado após as 19:00 e aos finais de semana.";
                    returnJSON.ReturnCode = Enum.GetName(typeof(ReturnType), ReturnType.WARNING);
                    retorno = serializer.Serialize(returnJSON);
                    context.Response.ContentType     = "text/json";
                    context.Response.ContentEncoding = Encoding.UTF8;
                    context.Response.Write(retorno);
                    return;
                }

                // É novo registro? Verifica se não está sendo gravado uma nova agenda com data retroativa.
                if (agenda.AgendaID.HasValue && agenda.AgendaID.Value == 0)
                {
                    if (agenda.DataHoraEhRetroativa(agenda.DataHoraEvento.Value))
                    {
                        returnJSON.Message    = "Não é permitido agendar uma congelação com data/hora retroativa.";
                        returnJSON.ReturnCode = Enum.GetName(typeof(ReturnType), ReturnType.WARNING);
                        retorno = serializer.Serialize(returnJSON);
                        context.Response.ContentType     = "text/json";
                        context.Response.ContentEncoding = Encoding.UTF8;
                        context.Response.Write(retorno);
                        return;
                    }
                }

                String assuntoSMS = String.Empty;

                // Registro em edição?
                if (agenda.AgendaID.HasValue && agenda.AgendaID.Value > 0)
                {
                    assuntoSMS = "Atualização de agendamento de congelação";

                    if (agenda.EstadoAgenda.Estado.Equals("Confirmado"))
                    {
                        // Consulta a existência de lembrestes configurados para a agenda.
                        List <NotificacaoAgenda> notificacoesExistentes = new NotificacaoAgendaRepository()
                                                                          .Retreave(new NotificacaoAgenda()
                        {
                            Agenda = agenda
                        });

                        // Se não houver nenhum lembrete, cria com base nas configurações existentes (recorrência de notificação).
                        if (notificacoesExistentes.Count == 0)
                        {
                            List <ConfiguracaoNotificacaoAgenda> configuracaoNotificacaoAgendas
                                = new ConfiguracaoNotificacaoAgendaRepository()
                                  .Retreave(new ConfiguracaoNotificacaoAgenda());

                            foreach (ConfiguracaoNotificacaoAgenda configuracao in configuracaoNotificacaoAgendas)
                            {
                                DateTime inicioNotificacao = agenda.DataHoraEvento.Value;

                                // Verifica a unidade de tempo da configuração para determinar a data/hora inicial da notificação.
                                switch (configuracao.UnidadeTempoAgenda.Unidade)
                                {
                                case "Minutos":
                                    inicioNotificacao = inicioNotificacao.AddMinutes(-Convert.ToDouble(configuracao.Tempo));
                                    break;

                                case "Horas":
                                    inicioNotificacao = inicioNotificacao.AddHours(-Convert.ToDouble(configuracao.Tempo));
                                    break;

                                case "Dias":
                                    inicioNotificacao = inicioNotificacao.AddDays(-Convert.ToDouble(configuracao.Tempo));
                                    break;

                                case "Semanas":
                                    inicioNotificacao = inicioNotificacao.AddDays(-Convert.ToDouble(configuracao.Tempo) * 7);
                                    break;

                                default:
                                    break;
                                }

                                /*
                                 * Verifica se a data/hora do momento está dentro do intervalo:
                                 * data/hora de início da notificação e a data/hora evento (fim) da agenda.
                                 * Como é uma nova agenda ou alteração de agenda, se a data/hora evento estiver
                                 * dentro do tempo de intervalo de notificação, a notificãção não será criada.
                                 */
                                if (DateTime.Now >= inicioNotificacao && DateTime.Now <= agenda.DataHoraEvento.Value)
                                {
                                    // Evita criar o registro no banco.
                                    continue;
                                }

                                NotificacaoAgenda notificacaoAgenda = new NotificacaoAgenda();
                                notificacaoAgenda.Agenda = agenda;
                                notificacaoAgenda.ConfiguracaoNotificacaoAgenda = configuracao;
                                new NotificacaoAgendaRepository().Create(notificacaoAgenda);
                            }
                        }
                        // Se não, se já existir o lembrete (por que a mesma agenda foi cancelada e confirmada posteriormente)
                        //, mantém ativado.
                        else
                        {
                            NotificacaoAgenda notificacaoAgenda = new NotificacaoAgenda();
                            notificacaoAgenda.Agenda    = agenda;
                            notificacaoAgenda.Utilizado = false;
                            notificacaoAgenda.Ativo     = true;
                            new NotificacaoAgendaRepository().ReativarNotificacao(notificacaoAgenda);
                        }
                    }
                    else if (agenda.EstadoAgenda.Estado.Equals("Cancelado") ||
                             agenda.EstadoAgenda.Estado.Equals("Agendado") ||
                             agenda.EstadoAgenda.Estado.Equals("Finalizado")
                             )
                    {
                        NotificacaoAgenda notificacaoAgenda = new NotificacaoAgenda();
                        notificacaoAgenda.Agenda = agenda;
                        new NotificacaoAgendaRepository().Delete(notificacaoAgenda);
                    }

                    new AgendaRepository().Update(agenda);
                }
                // Ou é novo registro?
                else
                {
                    agenda.AgendaID = new AgendaRepository().CreateWithReturnID(agenda);
                    assuntoSMS      = "Novo agendamento de congelação";

                    // Se a nova agenda é para o mesmo dia, evidencia no assunto do SMS.
                    if (agenda.DataHoraEvento.Value.Day == DateTime.Now.Day &&
                        agenda.DataHoraEvento.Value.Month == DateTime.Now.Month &&
                        agenda.DataHoraEvento.Value.Year == DateTime.Now.Year)
                    {
                        assuntoSMS = "*** Atenção *** Uma nova congelação foi marcada hoje.";
                    }
                }

                String mensagemSMS = Model.SMS.FormataMensagemSMS(agenda, assuntoSMS);

                if (ConfigurationManager.AppSettings["ENVIAR_SMS"] != null)
                {
                    String numeroTelefone = String.Format("{0}{1}", CodigoE164, agenda.MedicoExecucaoAgenda.Celular);

                    if (Convert.ToBoolean(ConfigurationManager.AppSettings["ENVIAR_SMS"]))
                    {
                        String MessageId = TwilioServices.SendSMS(numeroTelefone, mensagemSMS);

                        LogSmsAgenda logSmsAgenda = new LogSmsAgenda();
                        logSmsAgenda.Agenda               = agenda;
                        logSmsAgenda.SMSEnviado           = true;
                        logSmsAgenda.SMSDataProcessamento = DateTime.Now;
                        logSmsAgenda.SMSMessageID         = MessageId;
                        logSmsAgenda.Observacao           =
                            String.Format
                            (
                                "Origem SITE: mensagem destinado ao nº {0} enviada com sucesso ao servidor de serviço SMS."
                                , numeroTelefone
                            );
                        new LogSmsAgendaRepository().Create(logSmsAgenda);
                    }
                    else
                    {
                        LogSmsAgenda logSmsAgenda = new LogSmsAgenda();
                        logSmsAgenda.Agenda               = agenda;
                        logSmsAgenda.SMSEnviado           = false;
                        logSmsAgenda.SMSDataProcessamento = DateTime.Now;
                        logSmsAgenda.SMSMessageID         = null;
                        logSmsAgenda.Observacao           =
                            String.Format
                            (
                                "Origem SITE: mensagem destinado ao nº {0} não foi enviada, o serviço de envio de SMS está desabilitado. Utilize a chave ENVIAR_SMS do web.config da aplicação."
                                , numeroTelefone
                            );
                        new LogSmsAgendaRepository().Create(logSmsAgenda);
                    }
                }

                returnJSON.Message          = "Registro salvo com sucesso.";
                returnJSON.ReturnCode       = Enum.GetName(typeof(ReturnType), ReturnType.SUCCESS);
                context.Response.StatusCode = 201;
            }
            catch (SqlException e)
            {
                Log.Create(e);
                Email.Send("Agendamento de congelação - falha na aplicação", e);
                returnJSON.Message          = "Não foi possível salvar o registro.";
                returnJSON.ReturnCode       = Enum.GetName(typeof(ReturnType), ReturnType.ERROR);
                context.Response.StatusCode = 500;
            }
            catch (Exception e)
            {
                LogSmsAgenda logSmsAgenda = new LogSmsAgenda();
                logSmsAgenda.Agenda               = agenda;
                logSmsAgenda.SMSEnviado           = false;
                logSmsAgenda.SMSDataProcessamento = DateTime.Now;
                logSmsAgenda.Observacao           =
                    String.Format
                    (
                        "Ocorreu uma falha ao enviar o SMS para o nº {0}. Detalhes: {1}"
                        , String.Format("{0}{1}", CodigoE164, agenda.MedicoExecucaoAgenda.Celular)
                        , e.Message
                    );
                new LogSmsAgendaRepository().Create(logSmsAgenda);

                Log.Create(e);
                Email.Send("Agendamento de congelação - falha na aplicação", e);

                returnJSON.Message          = "Não foi possível enviar o SMS.";
                returnJSON.ReturnCode       = Enum.GetName(typeof(ReturnType), ReturnType.ERROR);
                context.Response.StatusCode = 500;
            }

            retorno = serializer.Serialize(returnJSON);
            context.Response.ContentType     = "text/json";
            context.Response.ContentEncoding = Encoding.UTF8;
            context.Response.Write(retorno);
        }