public AppUser SaveOrUpdate(UserSectorsModel userSectorsModel)
        {
            using (var tran = UnitOfWork.Context.Database.BeginTransaction())
            {
                try
                {
                    int id;
                    if (userSectorsModel.IsNew)
                    {
                        var user = _appUserRepository.Add(new AppUser()
                        {
                            Name = userSectorsModel.Name, TermsIsAccepted = userSectorsModel.TermsIsAccepted
                        });

                        foreach (var sector in userSectorsModel.Sectors)
                        {
                            _userSectorsRepository.Add(new UsersSector()
                            {
                                SectorId = sector.Id,
                                UserId   = user.Id
                            });
                        }

                        id = user.Id;
                    }
                    else
                    {
                        _appUserRepository.Update(new AppUser()
                        {
                            Id              = userSectorsModel.Id,
                            Name            = userSectorsModel.Name,
                            TermsIsAccepted = true,
                            UsersSectors    = null
                        });

                        _userSectorsRepository.DeleteWhere(x => x.UserId == userSectorsModel.Id);

                        foreach (var sector in userSectorsModel.Sectors)
                        {
                            _userSectorsRepository.Add(new UsersSector()
                            {
                                SectorId = sector.Id,
                                UserId   = userSectorsModel.Id
                            });
                        }

                        id = userSectorsModel.Id;
                    }

                    tran.Commit();
                    var result = _appUserRepository.Get(id);
                    return(result);
                }
                catch (Exception)
                {
                    tran.Rollback();
                    throw;
                }
            }
        }
Esempio n. 2
0
        public AppUser Create([FromBody] UserSectorsModel model)
        {
            if (!ModelState.IsValid)
            {
                throw new InvalidOperationException(
                          "All fields are required");
            }
            var result = _appUserService.SaveOrUpdate(model);

            return(result);
        }