コード例 #1
0
        public IActionResult Update([FromBody] MPersonUpdate mPerson)
        {
            if (!HttpContext.Session.IsAuth())
            {
                return(StatusCode((int)HttpStatusCode.Unauthorized, ResponseContent.Create(null, HttpStatusCode.Unauthorized, "Não autorizado!")));
            }

            if (string.IsNullOrEmpty(mPerson.Name))
            {
                return(BadRequest(ResponseContent.Create(null, HttpStatusCode.BadRequest, "Seu nome não pode estar em vazio!")));
            }

            if (!string.IsNullOrEmpty(mPerson.Password) && !mPerson.Password.IsValidPassord())
            {
                return(BadRequest(ResponseContent.Create(null, HttpStatusCode.BadRequest, "A senha deve conter ao menos 6 caracteres, dentre eles, uma letra e um número!")));
            }

            var person = _uPerson.GetById(HttpContext.Session.GetSessionPersonId());

            if (!string.IsNullOrEmpty(mPerson.Password))
            {
                person.Password = mPerson.Password.Sha256Hash();
            }

            if (mPerson.Institution != null && mPerson.Institution.Name != person.Institution?.Name && !string.IsNullOrEmpty(mPerson.Institution.Name))
            {
                person.Institution = _uInstitution.GetExact(mPerson.Institution.Name) ?? _bInstitution.Save(mPerson.Institution.Name);
            }
            else if (string.IsNullOrEmpty(mPerson.Institution?.Name) && !string.IsNullOrEmpty(person.Institution?.Name))
            {
                person.Institution = null;
            }

            if (!string.IsNullOrEmpty(mPerson.Photo))
            {
                var file = FileExtensions.CopyFromTo(new List <string> {
                    mPerson.Photo
                }, _configuration["Directory:TEMP"], _configuration["Directory:UPLOAD"]).FirstOrDefault();
                person.PhotoPath = file;
            }

            person.Name = mPerson.Name;

            _bPerson.Update(person);
            _bHistory.SaveHistory(person.Id, "Usuário editou seu cadastro");

            HttpContext.Session.Authenticate(person);
            return(Ok(ResponseContent.Create(null, HttpStatusCode.OK, "Usuário editado com sucesso!")));
        }