Ejemplo n.º 1
0
        public IHttpActionResult Add([FromBody] AddUserForm form)
        {
            Dictionary <string, string> errorList;

            if (!ModelState.IsValid)
            {
                errorList = AppUtils.Validation.GetErrorDictionary(ModelState);
                return(Content(
                           HttpStatusCode.BadRequest,
                           new ResponseWrapper <object>(HttpStatusCode.BadRequest, errorList)
                           ));
            }

            uint loggedInUserId = Convert.ToUInt32(RequestContext.Principal.Identity.Name);

            User user = new User();

            user.Username     = form.Username;
            user.IsActive     = form.IsActive;
            user.FullName     = form.FullName;
            user.EmailAddress = form.EmailAddress;
            user.Designation  = form.Designation;
            user.MobileNumber = form.MobileNumber;
            user.UserTypeId   = (byte)UserType.None;
            user.Password     = _passwordEncoder.HashPassword("123");
            user.CreatedBy    = loggedInUserId;

            var conn  = AppSetting.Db.OpenConnection();
            var trans = conn.BeginTransaction();

            try
            {
                if (user.DAL_Add(conn, trans))
                {
                    bool hasErrorTransaction = form.Roles.Exists(
                        item =>
                    {
                        UserRole userRole = new UserRole
                        {
                            UserId    = user.UserId,
                            RoleId    = item,
                            CreatedBy = loggedInUserId,
                        };
                        return(!userRole.DAL_Add(conn, trans));
                    }
                        );

                    if (!hasErrorTransaction)
                    {
                        trans.Commit();
                        return(Ok(new ResponseWrapper <object>(HttpStatusCode.OK, new
                        {
                            Id = user.UserId
                        })));
                    }
                }
                trans.Rollback();
            }
            catch (Exception)
            {
                trans.Rollback();
            }
            finally
            {
                AppSetting.Db.CloseConnection(ref conn);
            }

            ModelState.AddModelError("", "Failed to process your request");
            errorList = AppUtils.Validation.GetErrorDictionary(ModelState);
            return(Content(
                       HttpStatusCode.BadRequest,
                       new ResponseWrapper <object>(HttpStatusCode.BadRequest, errorList)
                       ));
        }