コード例 #1
0
        private string GenerateLoginCode(UnitModel request)
        {
            try {
                LogHelper.Log.Debug("GenerateLoginCode start");
                var source = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

                var country = _context.Dictionaries.FirstOrDefault(x => x.Id == request.CountryId.Value);
                if (country == null)
                {
                    LogHelper.Log.Error("Не удалось найти Гражданство в справочнике");
                    throw new Exception("Не удалось найти Гражданство в справочнике");
                }


                var i1      = source.IndexOf(country.Code[0]);
                var i2      = source.IndexOf(country.Code[1]);
                var code    = (i1 * source.Length) + i2;
                var codeStr = code.ToString().PadLeft(3, '0');

                var users = Membership.GetAllUsers();
                //LogHelper.Log.DebugFormat("users.Count: {0}", users.Count);
                var mUsers = users.Cast <MembershipUser>();
                //LogHelper.Log.DebugFormat("mUsers.Count: {0}", mUsers.Count());
                var count = mUsers.Count(x => x.CreationDate > DateTime.Today) + 1;
                //LogHelper.Log.DebugFormat("count: {0}", count);
                //var count = _context.Units.Count(x => x.CreatedDate > DateTime.Today) + 1;
                var dd = DateTime.Today.ToString("yyyyMMdd").Substring(2);
                return(codeStr + dd + count.ToString().PadLeft(3, '0'));
            }
            catch (Exception ex) {
                LogHelper.Log.Error("GenerateLoginCode Exception", ex);
                throw;
            }
        }
コード例 #2
0
        public async Task <JsonResult> PostRequest(UnitModel request, int personType, string password, bool isEcp)
        {
            LogHelper.Log.Debug("PostRequest start");
            string login = null;

            if (isEcp)
            {
                password = Membership.GeneratePassword(8, 2);
            }

            if (!isEcp && (personType == 2 || personType == 3))
            {
                request.Iin = GenerateLoginCode(request);
                LogHelper.Log.DebugFormat("Сгенерирован 12значный код {0} для пользователя {1} {2} {3}", request.Iin, request.LastName, request.FirstName, request.MiddleName);
            }

            login = request.Iin;

            if (_context.Employees.Count(x => x.Email.Equals(request.Email, StringComparison.InvariantCultureIgnoreCase)) > 0)
            {
                return(Json(new MessageModel {
                    IsError = true,
                    Message = "Пользователь с таким емэйлом уже есть!"
                }, JsonRequestBehavior.AllowGet));
            }

            var user = AccountServices.Instance.CreateUser(login, password);

            if (!user.IsError)
            {
                var result = AccountServices.Instance.PostRequest(_context, request, personType);
                if (!result.IsError)
                {
                    var template = EmailService.Instance.GetTemplate(new EmailTemplateModel {
                        Type        = 2,
                        HeadMessage = "Регистрация",
                        Title       = "Экспертиза лекарственных средств, изделий медицинского назначения и медицинской техники",
                        Message     = $"Ваш логин для входа {Environment.NewLine} логин: {login}"
                                      // , {Environment.NewLine} пароль: {user.Message}
                    });
                    LogHelper.Log.DebugFormat("Успешно зарегистрирован пользователь с логином {0}, ФИО {1} {2} {3}", request.Iin, request.LastName, request.FirstName, request.MiddleName);

                    await EmailService.Instance.SendEmail(request.Email, "Экспертиза лекарственных средств, изделий медицинского назначения и медицинской техники", template);
                }
                return(Json(result, JsonRequestBehavior.AllowGet));
            }
            else
            {
                return(Json(user, JsonRequestBehavior.AllowGet));
            }
        }