コード例 #1
0
 public IActionResult Result(SendInvitesDTO data)
 {
     return(new SendInvites().Result(data.Numbers, data.Messages));
 }
コード例 #2
0
        public static ValidDTO Validate(SendInvitesDTO data)
        {
            if (ChekDB(apiid))
            {
                return(new ValidDTO()
                {
                    Message = "PHONE_NUMBERS_INVALID: Too much phone numbers, should be less or equal to 128 per day.",
                    Status = 403
                });
            }

            if (string.IsNullOrEmpty(data.Messages))
            {
                return(new ValidDTO()
                {
                    Message = "MESSAGE_EMPTY: Invite message is missing.",
                    Status = 405
                });
            }

            if (data.Numbers.Length == 0)
            {
                return(new ValidDTO()
                {
                    Message = "PHONE_NUMBERS_EMPTY: Phone_numbers is missing.",
                    Status = 401
                });
            }

            if (data.Numbers.Length >= 16)
            {
                return(new ValidDTO()
                {
                    Message = "PHONE_NUMBERS_INVALID: Too much phone numbers, should be less or equal to 16 per request.",
                    Status = 402
                });
            }

            //Здесь о5, в зависимости от тз, но лучше бы просто пропустил рассылку.
            if (data.Numbers.Distinct().Count() != data.Numbers.Length)
            {
                return(new ValidDTO()
                {
                    Message = "PHONE_NUMBERS_INVALID: Duplicate numbers detected.",
                    Status = 404
                });
            }

            string message = Encoding.Translit(data.Messages);

            message = Encoding.GSMChar(message);
            if (message.Length > 160)
            {
                return(new ValidDTO()
                {
                    Message = "MESSAGE_INVALID: Invite message too long, should be less or equal to 128 characters of 7-bit GSM charset.",
                    Status = 407
                });
            }

            if (string.IsNullOrEmpty(message))
            {
                return(new ValidDTO()
                {
                    Message = "MESSAGE_INVALID: Invite message should contain only characters in 7-bit GSM encoding or Cyrillic letters as well.",
                    Status = 406
                });
            }

            //Вариативно от т.з., переделал бы на regex подправляющий номера в формат, съедал бы и + и скобки и т.п.
            foreach (string x in data.Numbers)
            {
                if (!x.StartsWith("7") || x.Length != 11)
                {
                    return(new ValidDTO()
                    {
                        Message = "PHONE_NUMBERS_INVALID: One or several phone numbers do not match with international format",
                        Status = 400
                    });
                }
            }

            return(new ValidDTO()
            {
                Status = 200, Message = ""
            });
        }