public void Create(string email, string password)
        {
            CabinetUserDTO existsUser = getUserDTO(u => u.Email.ToUpper() == email.ToUpper());

            if (existsUser != null)
            {
                setErrorMsg("Email", Resource.UniqueEmailConstraintMsg);
            }

            if (!FormatConfirm.IsEmail(email))
            {
                setErrorMsg("Email", Resource.EmailConstraintMsg);
            }


            checkStringConstraint("Password", password, true, 100, 5);

            if (errorMessages.Count > 0)
            {
                throw new DataServiceException(Resource.GeneralConstraintMsg, errorMessages);
            }


            CabinetUser user = new CabinetUser()
            {
                Email    = email,
                Password = password
            };

            userRepository.Save(user);

            repository.SaveChanges();
        }
        public void CabinetUserService_Get()
        {
            CabinetUser u = userService.Get(1);

            Assert.AreEqual(u.Id, listUser[0].Id);
            Assert.AreEqual(u.Email, listUser[0].Email);
        }
        public void SetOneSignalUserId(long userId, string oneSignalUserId)
        {
            CabinetUser user = userRepository.Get(userId);

            user.OneSignalUserId = oneSignalUserId;
            userRepository.Save(user);

            repository.SaveChanges();
        }
        public void ChangeSubscribe(long userId)
        {
            CabinetUser user = userRepository.Get(userId);

            user.Subscribe = !user.Subscribe;
            userRepository.Save(user);

            repository.SaveChanges();
        }
示例#5
0
 public IHttpActionResult Get()
 {
     return(execute(delegate()
     {
         long userId = User.Identity.GetUserId <long>();
         CabinetUser user = userService.Get(userId);
         if (user.Employee != null)
         {
             user.Employee.User = null;
         }
         result = Json(new { success = true, data = user });
     }));
 }
        private CabinetUserDTO getUserDTO(Expression <Func <CabinetUser, bool> > predicate)
        {
            CabinetUser user = userRepository.Get(predicate);

            if (user == null)
            {
                return(null);
            }

            CabinetUserDTO dto = new CabinetUserDTO()
            {
                Email    = user.Email,
                Password = user.Password,
                Id       = user.Id,
                FM       = user.Employee != null ? user.Employee.FM : null,
                IM       = user.Employee != null ? user.Employee.IM : null,
                OT       = user.Employee != null ? user.Employee.OT : null
            };

            return(dto);
        }
示例#7
0
        public void Save(EmployeeDTO dto)
        {
            checkStringConstraint("FM", dto.FM, true, 100, 2);
            checkStringConstraint("IM", dto.IM, true, 100, 2);
            checkStringConstraint("OT", dto.OT, true, 100, 2);

            string pattern = "[a-zA-Z]";
            var    results = Regex.Matches(dto.FM, pattern);

            foreach (Match result in results)
            {
                setErrorMsg("FM", String.Format(Resource.NotCyrillicConstraintMsg, result.Value.ToUpper(), result.Index + 1));
            }

            results = Regex.Matches(dto.IM, pattern);
            foreach (Match result in results)
            {
                setErrorMsg("IM", String.Format(Resource.NotCyrillicConstraintMsg, result.Value.ToUpper(), result.Index + 1));
            }

            results = Regex.Matches(dto.OT, pattern);
            foreach (Match result in results)
            {
                setErrorMsg("OT", String.Format(Resource.NotCyrillicConstraintMsg, result.Value.ToUpper(), result.Index + 1));
            }

            checkStringConstraint("Cabinet", dto.Cabinet, true, 100, 1);
            checkStringConstraint("Phone", dto.Phone, true, 100, 5);

            if (errorMessages.Count > 0)
            {
                throw new DataServiceException(Resource.GeneralConstraintMsg, errorMessages);
            }

            Employee    entity = employeeRepository.Get(dto.Id);
            CabinetUser user   = null;

            if (dto.Id > 0)
            {
                user = userRepository.Get(dto.Id);
            }

            Post post = null;

            if (!String.IsNullOrWhiteSpace(dto.PostName))
            {
                post = postRepository.Get(new SimpleEntityByNameEqualSpecification <Post>(dto.PostName));
            }

            bool isNew = entity == null;

            if (isNew)
            {
                //проверяем, не был ли ранее создан сотрудник
                entity = employeeRepository.Get(
                    e => e.FM.ToUpper() == dto.FM.ToUpper() &&
                    e.IM.ToUpper() == dto.IM.ToUpper() &&
                    e.OT.ToUpper() == dto.OT.ToUpper() &&
                    e.Organization.Id == dto.OrganizationId &&
                    e.Post.Id == (post != null? post.Id: 0) &&
                    e.Phone.ToUpper() == dto.Phone.ToPhoneList());

                if (entity != null)                 //сотрудник был создан ранее
                {
                    dto.Id = entity.Id;
                    if (user != null)               //1. ф-я вызывается из личного кабинета
                    {
                        if (entity.Id == user.Id)   //1.1. сотрудник был создан ранее из личного кабинета
                        {
                            return;
                        }
                        else                        //1.2. сотрудник был создан ранее из АРМ Диспетчера
                        {
                            //Требуется вручную в БД изменить Id у user, за счет чего произойдёт привязка 1-1 к employee
                            //Вообще говоря, это может быть каким-то злономеренным действием,
                            //когда пользователь пытается привязаться к существующему другому сотруднику
                            throw new DataServiceException(Resource.UniqueEmployeeConstraintMsg);
                        }
                    }
                    else                            //2. ф-я вызывается из АРМ Диспетчера
                    {
                        if (entity.User != null)    //2.1. сотрудник был создан ранее из личного кабинета
                        {
                            return;
                        }
                        else                        //2.2. сотрудник был создан ранее из АРМ Диспетчера
                        {
                            return;
                        }
                    }
                }
                else
                {
                    entity = new Employee();
                }
            }
            else
            {
                if (entity.Organization != null && dto.OrganizationId.HasValue &&
                    entity.Organization.Id != dto.OrganizationId)
                {
                    //удаляем из профиля заявителя объекты, на которые он не сможет подавать заявки,
                    //так как для них не определится Исполнитель
                    var listPersonalProfileObject = queryHandler
                                                    .Handle <EmployeeObjectQueryParam, IEnumerable <EmployeeObjectDTO>, IQuery <EmployeeObjectQueryParam, IEnumerable <EmployeeObjectDTO> > >
                                                        (new EmployeeObjectQueryParam
                    {
                        EmployeeId = entity.User.Id
                    }, _employeeObjectQuery);

                    IEnumerable <OrganizationObjectTypeWorker> listOrganizationObjectTypeWorker =
                        organizationObjectTypeWorkerRepository.GetList(t => t.Organization.Id == dto.OrganizationId).ToList();

                    IEnumerable <EmployeeObjectDTO> toRemoval = listPersonalProfileObject
                                                                .Where(t => !listOrganizationObjectTypeWorker
                                                                       .Select(r => r.ObjectType.Id)
                                                                       .Contains(t.ObjectType.Id));

                    foreach (var p in toRemoval)
                    {
                        employeeObjectRepository.Delete(p.Id);
                    }
                }
            };

            entity.FM      = dto.FM.Trim().ToFirstLetterUpper();
            entity.IM      = dto.IM.Trim().ToFirstLetterUpper();
            entity.OT      = dto.OT.Trim().ToFirstLetterUpper();
            entity.Cabinet = dto.Cabinet.Trim().ToUpper();
            entity.Phone   = dto.Phone.ToPhoneList();

            if (dto.OrganizationId.HasValue)
            {
                entity.Organization = organizationRepository.Get(dto.OrganizationId.Value);
            }
            else
            {
                entity.Organization = null;
            }

            if (!String.IsNullOrWhiteSpace(dto.PostName))
            {
                if (post == null)
                {
                    post = new Post()
                    {
                        Name = dto.PostName.Trim().ToFirstLetterUpper()
                    };
                    postRepository.Save(post);
                }
                entity.Post = post;
            }
            else
            {
                entity.Post = null;
            }

            if (isNew && user != null)
            {
                employeeRepository.Insert(entity, user.Id);
            }
            else
            {
                employeeRepository.Save(entity);
            }

            repository.SaveChanges();

            dto.Id = entity.Id;
        }