Exemplo n.º 1
0
        public void SaveRelationGroupId(string id, RelationGroupModel model)
        {
            var filter = Builders <Job> .Filter.Eq(p => p.Id, id);

            var update = Builders <Job> .Update.Push(i => i.RelationGroupList, model);

            collection.UpdateOne(filter, update);
        }
Exemplo n.º 2
0
        public async Task <JobLocationViewModel> GetLocationModel(string jobId, Guid?housingDepartmentId)
        {
            var job = await jobService.GetJobById(jobId);

            bool isGroupedJob = job.RelationGroupList.Any() && job.ParentId != null;
            var  model        = new JobLocationViewModel {
                IsGroupedJob = isGroupedJob
            };

            if (isGroupedJob)
            {
                bool isParent = job.ParentId == null;
                RelationGroupModel relationGroupModel = job.RelationGroupList.FirstOrDefault(x => x.HousingDepartmentId == housingDepartmentId);
                model.GroupedJobHousingDepartmentId = relationGroupModel?.HousingDepartmentId;
                IEnumerable <Guid> relationGroupIdList = job.RelationGroupList.Select(x => x.RelationGroupId);
                // housingDepartmentId can be null only for not grouped task, if admin during task creation doesn't choose any HD in department picker
                var groupedTasks = jobService.GetRelatedAddressListForHousingDepartment(relationGroupIdList, housingDepartmentId.Value, isParent);
                model.GroupedTasks = groupedTasks.Select(i => new IdValueModel <string, string> {
                    Id = i.Id, Value = i.Value
                });
                foreach (var task in groupedTasks)
                {
                    if (model.GroupedJobHousingDepartmentId.HasValue)
                    {
                        var addresses = new Dictionary <Guid, string>();
                        addresses.Add(model.GroupedJobHousingDepartmentId.Value, task.Value);
                        model.AddressList.Add(task.Id, addresses);
                    }
                }
            }
            else
            {
                var departments = jobService.GetAssignedDepartments(jobId);
                model.Departments = departments.Select(i => new IdValueModel <Guid, string> {
                    Id = i.Id, Value = i.DisplayName
                });
                model.AddressList.Add(jobId, job.AddressList.ToDictionary(k => k.HousingDepartmentId, v => v.Address));
            }

            return(model);
        }
Exemplo n.º 3
0
        private JobAssign GetJobAssign(Job job, Guid housingDepartmentId)
        {
            JobAssign localAssign  = null;
            JobAssign globalAssign = null;

            if (job.ParentId != null)
            {
                RelationGroupModel model = job.RelationGroupList.First();
                localAssign  = job.Assigns.FirstOrDefault(x => !x.IsGlobal && x.HousingDepartmentIdList.Contains(housingDepartmentId));
                globalAssign = model.HousingDepartmentId == housingDepartmentId
                        ? job.Assigns.FirstOrDefault(x => x.IsGlobal && x.HousingDepartmentIdList.Contains(housingDepartmentId))
                        : null;
            }
            else
            {
                localAssign  = job.Assigns.FirstOrDefault(x => !x.IsGlobal && x.HousingDepartmentIdList.Contains(housingDepartmentId));
                globalAssign = job.Assigns.FirstOrDefault(x => x.IsGlobal && x.HousingDepartmentIdList.Contains(housingDepartmentId));
            }

            return(localAssign ?? globalAssign);
        }