コード例 #1
0
        public ActionResult Create(TeamMemberModel model)
        {
            if (ModelState.IsValid)
            {
                var teamMember = new Core.Entities.TeamMember
                {
                    Id            = model.Id,
                    FullName      = model.Name,
                    Position      = model.Position,
                    OrderNo       = model.OrderNo,
                    IsActive      = model.IsActive,
                    PictureId     = model.PictureId,
                    Description   = model.Description,
                    CreateDateUtc = DateTime.UtcNow
                };
                var result = teamMemberService.Insert(teamMember);
                if (result)
                {
                    this.NotifySuccess("Successfully saved.");
                }
                else
                {
                    this.NotifyError("Item can not saved!");
                }

                return(RedirectToAction("Edit", new { Id = teamMember.Id }));
            }

            return(View(model));
        }
コード例 #2
0
        // DELETE api/teammanage/5
        public HttpResponseMessage Delete(TeamMemberModel value)
        {
            using (var ctx = new Entities())
            {
                Team t = ctx.Teams.FirstOrDefault(i => i.CellID == value.CellId && i.UserID == value.UserId);

                if (t != null)
                {
                    ctx.Teams.Remove(t);

                    if (ctx.SaveChanges() != 0)
                    {
                        return(new HttpResponseMessage(HttpStatusCode.OK));
                    }
                    else
                    {
                        return(new HttpResponseMessage(HttpStatusCode.InternalServerError));
                    }
                }
                else
                {
                    return(new HttpResponseMessage(HttpStatusCode.NotFound));
                }
            }
        }
コード例 #3
0
        public ActionResult Edit(TeamMemberModel model)
        {
            if (ModelState.IsValid)
            {
                var teamMember = teamMemberService.GetById(model.Id);
                if (teamMember == null)
                {
                    this.NotifyError("Item not found.");
                    return(RedirectToAction("List"));
                }

                teamMember.FullName      = model.Name;
                teamMember.IsActive      = model.IsActive;
                teamMember.OrderNo       = model.OrderNo;
                teamMember.PictureId     = model.PictureId;
                teamMember.Description   = model.Description;
                teamMember.UpdateDateUtc = DateTime.UtcNow;

                var result = teamMemberService.Update(teamMember);
                if (result)
                {
                    this.NotifySuccess("Successfully saved.");
                }
                else
                {
                    this.NotifyError("Item can not saved!");
                }

                return(RedirectToAction("Edit", new { id = model.Id }));
            }

            return(View(model));
        }
コード例 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public ActionResult Edit(int?id)
        {
            if (!id.HasValue)
            {
                return(RedirectToAction("List"));
            }

            var teamMember = teamMemberService.GetById(id.Value);

            if (teamMember == null)
            {
                this.NotifyError("Item not found.");
                return(RedirectToAction("List"));
            }

            var model = new TeamMemberModel
            {
                Id          = teamMember.Id,
                Name        = teamMember.FullName,
                Position    = teamMember.Position,
                IsActive    = teamMember.IsActive,
                OrderNo     = teamMember.OrderNo,
                PictureId   = teamMember.PictureId,
                Description = teamMember.Description
            };

            return(View(model));
        }
コード例 #5
0
ファイル: BuildManager.cs プロジェクト: yesadahmed/Dockers
        async Task <List <TeamMemberModel> > GetTeamMembers(string projectId, string teamId, TeamHttpClient teamClient)
        {
            List <TeamMemberModel> lst             = null;
            TeamMemberModel        teamMemberModel = null;

            try
            {
                var teamMembers = await teamClient.GetTeamMembersWithExtendedPropertiesAsync(projectId, teamId);

                if (teamMembers != null && teamMembers.Count > 0)
                {
                    lst = new List <TeamMemberModel>();
                    foreach (var member in teamMembers)
                    {
                        if (member.Identity != null)
                        {
                            teamMemberModel = new TeamMemberModel()
                            {
                                Email      = member.Identity.UniqueName,
                                MemberId   = member.Identity.Id,
                                MemberName = member.Identity.DisplayName,
                                MemberUrl  = member.Identity.Url
                            };
                        }
                        lst.Add(teamMemberModel);
                    }
                }
            }
            catch (Exception)
            {
            }

            return(lst);
        }
コード例 #6
0
        public ActionResult Create()
        {
            var model = new TeamMemberModel();

            model.IsActive      = true;
            model.CreateDateUtc = DateTime.UtcNow;
            return(View(model));
        }
コード例 #7
0
 public TeamMember TeamMemberModelToTeamMemberEntity(TeamMemberModel model)
 {
     return(new TeamMember
     {
         Id = model.Id,
         User = UserModelToUserEntity(model.User),
         Team = TeamModelToTeamEntity(model.Team)
     });
 }
コード例 #8
0
ファイル: BugController.cs プロジェクト: Maximcr/bugzbgone
        public ActionResult CreateTeamMember(TeamMemberModel teamMemberModel)
        {
            var membership = (SimpleMembershipProvider)Membership.Provider;

            membership.CreateUserAndAccount(teamMemberModel.UserName, teamMemberModel.Password);
            var roles = (SimpleRoleProvider)Roles.Provider;

            roles.AddUsersToRoles(new[] { teamMemberModel.UserName }, new[] { "Team Member" });
            return(RedirectToAction("Index"));
        }
コード例 #9
0
 public TeamMemberModel AddUserToTeam(TeamMemberModel TeamMember)
 {
     using (var dbContext = dbContextFactory.CreateDbContext())
     {
         var entity = mapper.TeamMemberModelToTeamMemberEntity(TeamMember);
         dbContext.TeamMembers.Add(entity);
         dbContext.SaveChanges();
         return(mapper.TeamMemberEntityToTeamMemberModel(entity));
     }
 }
コード例 #10
0
        public bool DeleteAuthorized(Ice.Core.Session session, TeamMemberModel model)
        {
            string sql = string.Format(@"DELETE FROM Custom_Authorized WHERE TreeViewId = {0} AND TeamId = '{1}' AND UserId = '{2}'" + Environment.NewLine
                                       , model.TreeViewId
                                       , model.TeamCode
                                       , model.UserId);

            Repository.Instance.ExecuteWithTransaction(sql, "Delete Authorized");

            return(true);
        }
コード例 #11
0
        static void CreateTeamMember(DatabaseInterface db, UserModel user, TeamModel team)
        {
            TeamMemberModel teamMember = new TeamMemberModel()
            {
                User       = user,
                Permission = Permission.TEAM_CAPTAIN,
                DateJoined = DateTime.Now,
                Team       = team
            };

            db.AddTeamMember(teamMember);
        }
コード例 #12
0
        private void DeletAuthorized()
        {
            foreach (DataGridViewRow row in dgvAuthorized.SelectedRows)
            {
                TeamMemberModel model = new TeamMemberModel();
                model.TreeViewId = trans.Tree.TreeViewId;
                model.TeamCode   = nodeCurr;
                model.UserId     = row.Cells["id1"].Value.ToString();
                _repo.DeleteAuthorized(epiSession, model);
            }

            trans.Authorized = _repo.GetAuthorizedByTree(trans.Tree.TreeViewId).ToList();
            SetTeamAuthToGrid(trans.Authorized.Where(x => x.TeamCode == nodeCurr && x.TreeViewId == trans.Tree.TreeViewId).ToList());
        }
コード例 #13
0
        public void AddUserToTeam_value()
        {
            var modelTeam = new TeamModel
            {
                Id   = Guid.NewGuid(),
                Name = "TestTeamModel"
            };
            var returnedTeamModel = fixture.Repository.Create(modelTeam);

            Assert.NotNull(returnedTeamModel);

            UserModel userModel = new UserModel()
            {
                Id   = Guid.NewGuid(),
                Name = "UserName"
            };

            TeamModel teamModel = new TeamModel()
            {
                Id   = Guid.NewGuid(),
                Name = "TeamName"
            };

            var teamMemberModel = new TeamMemberModel()
            {
                Id   = Guid.NewGuid(),
                User = userModel,
                Team = teamModel
            };

            TeamMemberModel returnedTeamMemberModel = fixture.Repository.AddUserToTeam(teamMemberModel);

            Assert.Equal(teamMemberModel.Id, returnedTeamMemberModel.Id);

            Assert.Equal(teamMemberModel.Team.Id, returnedTeamMemberModel.Team.Id);
            Assert.Equal(teamMemberModel.Team.Name, returnedTeamMemberModel.Team.Name);


            Assert.Equal(teamMemberModel.User.Id, returnedTeamMemberModel.User.Id);
            Assert.Equal(teamMemberModel.User.Name, returnedTeamMemberModel.User.Name);


            // clean
            fixture.Repository.Delete(returnedTeamMemberModel.Id);
            fixture.Repository.Delete(returnedTeamModel.Id);


            Assert.Empty(fixture.Repository.GetAll());
        }
コード例 #14
0
        private async Task <TeamMember> TeamMemberToEntityAsync(TeamMemberModel model, string requestId = "")
        {
            var teamMember = TeamMember.Empty;

            teamMember.Id           = model.Id;
            teamMember.DisplayName  = model.DisplayName;
            teamMember.Status       = ActionStatus.FromValue(model.Status.Value);
            teamMember.AssignedRole = await _userProfileHelpers.RoleModelToEntityAsync(model.AssignedRole, requestId);

            teamMember.Fields                   = TeamMemberFields.Empty;
            teamMember.Fields.Mail              = model.Mail;
            teamMember.Fields.Title             = model.Title;
            teamMember.Fields.UserPrincipalName = model.UserPrincipalName;

            return(teamMember);
        }
コード例 #15
0
        public SearchTeamAndTeamMemberModel searchTeamAndMember(int userID, string searchName)
        {
            SearchTeamAndTeamMemberModel model = new SearchTeamAndTeamMemberModel();
            var inquery = this._teamMemberBll.GetInWhereSql("T_TEAM_ID",
                                                            new DapperExQuery <T_TEAM_MEMBER>().AndWhere(s => s.U_USER_ID, OperationMethod.Equal, userID));
            var teams      = this._teamBll.GetList(new DapperExQuery <T_TEAM>().AndWhere(s => s.ID, OperationMethod.In, inquery));
            var teamMember = this._teamMemberBll.GetList(new DapperExQuery <T_TEAM_MEMBER>().AndWhere(s => s.T_TEAM_ID, OperationMethod.In, inquery));

            List <TeamInfoModel>   teminfoList   = Mapper.Map <List <T_TEAM>, List <TeamInfoModel> >(teams);
            List <TeamMemberModel> temMemberList = Mapper.Map <List <T_TEAM_MEMBER>, List <TeamMemberModel> >(teamMember);

            model.teamInfos = teminfoList.Where(c => c.teamName.Contains(searchName)).Select(s => new TeamRepoModel
            {
                info = new TeamInfoModel
                {
                    createTime     = s.createTime,
                    createUserMail = s.createUserMail,
                    teamAvatar     = s.teamAvatar,
                    teamID         = s.teamID,
                    teamName       = s.teamName,
                    teamSummary    = s.teamSummary
                },
                members = temMemberList.Where(w => w.teamID == s.teamID).ToList()
            }).ToList();
            model.teamMembers = temMemberList.Where(c => (c.memberName != null && c.memberName.Contains(searchName)) || c.memberMail.Contains(searchName)).GroupBy(g => new
            {
                g.memberMail
            }).Select(s => new TeamMemberModel()
            {
                memberMail = s.Key.memberMail,
                memberName = temMemberList.LastOrDefault(l => l.memberMail == s.Key.memberMail).memberName
            }).ToList();
            var userInfo = this._userRepository.GetUser(searchName);

            if (userInfo != null)
            {
                model.teamMembers = model.teamMembers.Where(c => c.memberMail != searchName).ToList();
                TeamMemberModel member = new TeamMemberModel()
                {
                    memberMail = userInfo.info.mail,
                    memberName = userInfo.info.userName
                };
                model.teamMembers.Add(member);
            }
            return(model);
        }
コード例 #16
0
        public bool AddAuthorized(Ice.Core.Session session, TeamMemberModel model)
        {
            string sql = string.Format(@"IF NOT EXISTS
                                         (
                                           SELECT * FROM Custom_Authorized (NOLOCK) WHERE TreeViewId = {0} AND TeamId = '{1}' AND UserId = '{2}'
                                         )
                                            BEGIN
                                                INSERT INTO Custom_Authorized
                                                           (TreeViewId
                                                           ,TeamId
                                                           ,UserId
                                                           ,VisibleFlag
                                                           ,CreateBy
                                                           ,LastUpdateBy)
                                                     VALUES
                                                           ( {0} --<TreeViewId, int,>
                                                           , '{1}' --<TeamId, nvarchar(100),>
                                                           , '{2}' --<UserId, nvarchar(100),>
                                                           , 1 --<VisibleFlag, int,>
                                                           , '{3}' --<CreateBy, nvarchar(50),>
                                                           , '{3}' --<LastUpdateBy, nvarchar(50),>
                                                           )
                                            END
                                        ELSE
                                            BEGIN
                                                UPDATE Custom_Authorized
                                                    SET TreeViewId = {0} --<TreeViewId, int,>
                                                        ,TeamId = '{1}' --<TeamId, nvarchar(100),>
                                                        ,UserId = '{2}' --<UserId, nvarchar(100),>
                                                        ,VisibleFlag = 1 --<VisibleFlag, int,>
                                                        ,LastUpdateBy = '{3}' --<LastUpdateBy, nvarchar(50),>
                                                        WHERE TreeViewId = {0} AND TeamId = '{1}' AND UserId = '{2}'
	                                        END"     + Environment.NewLine
                                       , model.TreeViewId
                                       , model.TeamCode
                                       , model.UserId
                                       , session.UserID);

            Repository.Instance.ExecuteWithTransaction(sql, "Add Authorized");

            return(true);
        }
コード例 #17
0
        // POST api/teammanage
        public HttpResponseMessage Post(TeamMemberModel value)
        {
            using (var ctx = new Entities())
            {
                Team t          = ctx.Teams.FirstOrDefault(i => i.CellID == value.CellId && i.UserID == value.UserId);
                bool createdNew = false;

                if (t != null)
                {
                    t.RoleID = value.RoleId;
                }
                else
                {
                    t = new Team()
                    {
                        CellID = value.CellId,
                        UserID = value.UserId,
                        RoleID = value.RoleId
                    };
                    ctx.Teams.Add(t);
                    createdNew = true;
                }

                if (ctx.SaveChanges() != 0)
                {
                    if (createdNew)
                    {
                        return(new HttpResponseMessage(HttpStatusCode.Created));
                    }
                    else
                    {
                        return(new HttpResponseMessage(HttpStatusCode.OK));
                    }
                }
                else
                {
                    return(new HttpResponseMessage(HttpStatusCode.InternalServerError));
                }
            }
        }
コード例 #18
0
        private async Task <TeamMember> TeamMemberToEntityAsync(TeamMemberModel model, string requestId = "")
        {
            var teamMember = TeamMember.Empty;

            teamMember.Id           = model.Id;
            teamMember.DisplayName  = model.DisplayName;
            teamMember.AssignedRole = await _userProfileHelpers.RoleModelToEntityAsync(model.AssignedRole, requestId);

            teamMember.Fields                   = TeamMemberFields.Empty;
            teamMember.Fields.Mail              = model.Mail;
            teamMember.Fields.Title             = model.Title;
            teamMember.Fields.UserPrincipalName = model.UserPrincipalName;
            if (teamMember.AssignedRole.DisplayName.ToLower() == "relationshipmanager")
            {
                teamMember.ProcessStep = "New Opportunity";
            }
            else
            {
                teamMember.ProcessStep = model.ProcessStep;
            }
            return(teamMember);
        }
コード例 #19
0
        private TeamMember TeamMemberToEntityAsync(TeamMemberModel model, string requestId = "")
        {
            var teamMember = TeamMember.Empty;

            teamMember.Id                       = model.Id;
            teamMember.DisplayName              = model.DisplayName;
            teamMember.RoleId                   = model.RoleId;
            teamMember.Fields                   = TeamMemberFields.Empty;
            teamMember.Fields.Mail              = model.Mail;
            teamMember.Fields.Title             = model.Title;
            teamMember.Fields.UserPrincipalName = model.UserPrincipalName;
            teamMember.ProcessStep              = model.ProcessStep;
            teamMember.Fields.Permissions       = new List <Permission>();
            foreach (var permission in model.Permissions)
            {
                teamMember.Fields.Permissions.Add(new Permission {
                    Id = permission.Id, Name = permission.Name
                });
            }
            teamMember.TeamsMembership = TeamsMembership.FromName(string.IsNullOrEmpty(model.TeamsMembership.Name) ? TeamsMembership.None.Name : model.TeamsMembership.Name);
            teamMember.RoleName        = model.RoleName;
            return(teamMember);
        }
コード例 #20
0
 public TeamMemberModel GetMember(TeamMemberModel model)
 {
     throw new NotImplementedException();
 }
コード例 #21
0
 internal RestTeamMember(RestDiscordClient client, TeamMemberModel model) : base(client, model)
 {
     MembershipState = model.MembershipState;
     Permissions     = model.Permissions.ToImmutableArray();
 }
コード例 #22
0
        public async Task <IActionResult> CreateOpportunityAsync(string @event, [FromBody] JObject data)
        {
            if (!string.IsNullOrWhiteSpace(@event) && @event.Equals("create", StringComparison.InvariantCultureIgnoreCase))
            {
                try
                {
                    var jopp = data["InputParameters"].First()["value"]["Attributes"];

                    var attributes = jopp.ToDictionary(p => p["key"], v => v["value"]);

                    var opportunityMapping = dynamicsConfiguration.OpportunityMapping;
                    var opportunityName    = GetAttribute(attributes, opportunityMapping.DisplayName)?.ToString();
                    var opportunityId      = GetAttribute(attributes, "opportunityid").ToString();
                    var creator            = dynamicsLinkService.GetUserData(data["InitiatingUserId"].ToString());
                    var creatorRole        = proposalManagerConfiguration.CreatorRole;
                    var opp = new OpportunityViewModel
                    {
                        Reference        = opportunityId,
                        DisplayName      = opportunityName,
                        OpportunityState = OpportunityStateModel.FromValue(opportunityMapping.MapStatusCode((int)GetAttribute(attributes, "statuscode")["Value"])),
                        Customer         = new CustomerModel
                        {
                            DisplayName = dynamicsLinkService.GetAccountName(GetAttribute(attributes, "customerid")?["Id"].ToString())
                        },
                        DealSize             = (double?)GetAttribute(attributes, opportunityMapping.DealSize) ?? 0,
                        AnnualRevenue        = (double?)GetAttribute(attributes, opportunityMapping.AnnualRevenue) ?? 0,
                        OpenedDate           = DateTimeOffset.TryParse(GetAttribute(attributes, opportunityMapping.OpenedDate)?.ToString(), out var dto) ? dto : DateTimeOffset.Now,
                        Margin               = (double?)GetAttribute(attributes, opportunityMapping.Margin) ?? 0,
                        Rate                 = (double?)GetAttribute(attributes, opportunityMapping.Rate) ?? 0,
                        DebtRatio            = (double?)GetAttribute(attributes, opportunityMapping.DebtRatio) ?? 0,
                        Purpose              = GetAttribute(attributes, opportunityMapping.Purpose)?.ToString(),
                        DisbursementSchedule = GetAttribute(attributes, opportunityMapping.DisbursementSchedule)?.ToString(),
                        CollateralAmount     = (double?)GetAttribute(attributes, opportunityMapping.CollateralAmount) ?? 0,
                        Guarantees           = GetAttribute(attributes, opportunityMapping.Guarantees)?.ToString(),
                        RiskRating           = (int?)GetAttribute(attributes, opportunityMapping.RiskRating) ?? 0,
                        TeamMembers          = new TeamMemberModel[]
                        {
                            new TeamMemberModel
                            {
                                DisplayName       = creator.DisplayName,
                                Id                = creator.Id,
                                Mail              = creator.Email,
                                UserPrincipalName = creator.Email,
                                AssignedRole      = new RoleModel
                                {
                                    AdGroupName = creatorRole.AdGroupName,
                                    DisplayName = creatorRole.DisplayName,
                                    Id          = creatorRole.Id
                                }
                            }
                        },
                        Checklists = new ChecklistModel[] { }
                    };

                    var proposalManagerClient = await proposalManagerClientFactory.GetProposalManagerClientAsync();

                    var userProfileResult = await proposalManagerClient.GetAsync($"/api/UserProfile?upn={creator.Email}");

                    var userProfile = JsonConvert.DeserializeObject <UserProfileViewModel>(await userProfileResult.Content.ReadAsStringAsync());
                    if (!userProfile.UserRoles.Any(ur => ur.AdGroupName == creatorRole.AdGroupName))
                    {
                        return(BadRequest($"{creator.Email} is not a member of role {creatorRole.AdGroupName}."));
                    }

                    var remoteEndpoint = $"/api/Opportunity";
                    var result         = await proposalManagerClient.PostAsync(remoteEndpoint, new StringContent(JsonConvert.SerializeObject(opp), Encoding.UTF8, "application/json"));

                    if (result.IsSuccessStatusCode)
                    {
                        await dynamicsLinkService.CreateTemporaryLocationForOpportunityAsync(opportunityId, opportunityName);

                        return(Ok());
                    }
                    else
                    {
                        _logger.LogError("DYNAMICS INTEGRATION ENGINE: Proposal Manager did not return a success status code.");
                        return(BadRequest());
                    }
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex.Message);
                    _logger.LogError(ex.StackTrace);
                    return(BadRequest());
                }
            }

            return(BadRequest($"{nameof(@event)} is required"));
        }
コード例 #23
0
 internal RestTeamMember(RestTeam team, TeamMemberModel model) : base(team.Client, model.User)
 {
     Team            = team;
     MembershipState = model.MembershipState;
     Permissions     = model.Permissions.ReadOnly();
 }
コード例 #24
0
        public async Task <OpportunityViewModel> OpportunityToViewModelAsync(Opportunity entity, string requestId = "")
        {
            var oppId = entity.Id;

            try
            {
                //var entityDto = TinyMapper.Map<OpportunityViewModel>(entity);
                var viewModel = new OpportunityViewModel
                {
                    Id               = entity.Id,
                    DisplayName      = entity.DisplayName,
                    Reference        = entity.Reference,
                    Version          = entity.Version,
                    OpportunityState = OpportunityStateModel.FromValue(entity.Metadata.OpportunityState.Value),
                    DealSize         = entity.Metadata.DealSize,
                    AnnualRevenue    = entity.Metadata.AnnualRevenue,
                    OpenedDate       = entity.Metadata.OpenedDate,
                    //For DashBoard
                    TargetDate = entity.Metadata.TargetDate,
                    Industry   = new IndustryModel
                    {
                        Name = entity.Metadata.Industry.Name,
                        Id   = entity.Metadata.Industry.Id
                    },
                    Region = new RegionModel
                    {
                        Name = entity.Metadata.Region.Name,
                        Id   = entity.Metadata.Region.Id
                    },
                    Margin               = entity.Metadata.Margin,
                    Rate                 = entity.Metadata.Rate,
                    DebtRatio            = entity.Metadata.DebtRatio,
                    Purpose              = entity.Metadata.Purpose,
                    DisbursementSchedule = entity.Metadata.DisbursementSchedule,
                    CollateralAmount     = entity.Metadata.CollateralAmount,
                    Guarantees           = entity.Metadata.Guarantees,
                    RiskRating           = entity.Metadata.RiskRating,
                    OpportunityChannelId = entity.Metadata.OpportunityChannelId,
                    Customer             = new CustomerModel
                    {
                        DisplayName = entity.Metadata.Customer.DisplayName,
                        Id          = entity.Metadata.Customer.Id,
                        ReferenceId = entity.Metadata.Customer.ReferenceId
                    },
                    TeamMembers = new List <TeamMemberModel>(),
                    Notes       = new List <NoteModel>(),
                    Checklists  = new List <ChecklistModel>()
                };

                //DealType
                var dealTypeFlag = false;
                dealTypeFlag = entity.Content.DealType is null || entity.Content.DealType.Id is null;
                if (!dealTypeFlag)
                {
                    viewModel.DealType = await _templateHelpers.MapToViewModel(entity.Content.DealType);

                    //DealType Processes
                    var checklistPass = false;
                    foreach (var item in entity.Content.DealType.ProcessList)
                    {
                        if (item.ProcessType.ToLower() == "checklisttab" && checklistPass == false)
                        {
                            viewModel = await _checkListProcessService.MapToModelAsync(entity, viewModel, requestId);

                            checklistPass = true;
                        }
                        if (item.ProcessType.ToLower() == "feedbacktab")
                        {
                            viewModel = await customerFeedbackProcessService.MapToModelAsync(entity, viewModel, requestId);
                        }
                        if (item.ProcessType.ToLower() == "customerdecisiontab")
                        {
                            viewModel = await _customerDecisionProcessService.MapToModelAsync(entity, viewModel, requestId);
                        }
                        if (item.ProcessType.ToLower() == "proposalstatustab")
                        {
                            viewModel = await _proposalStatusProcessService.MapToModelAsync(entity, viewModel, requestId);
                        }
                    }
                }



                // TeamMembers
                foreach (var item in entity.Content.TeamMembers.ToList())
                {
                    var memberModel = new TeamMemberModel();
                    memberModel.AssignedRole = await _userProfileHelpers.RoleToViewModelAsync(item.AssignedRole, requestId);

                    memberModel.Id                = item.Id;
                    memberModel.DisplayName       = item.DisplayName;
                    memberModel.Mail              = item.Fields.Mail;
                    memberModel.UserPrincipalName = item.Fields.UserPrincipalName;
                    memberModel.Title             = item.Fields.Title ?? String.Empty;
                    memberModel.ProcessStep       = item.ProcessStep;

                    viewModel.TeamMembers.Add(memberModel);
                }

                // Notes
                foreach (var item in entity.Content.Notes.ToList())
                {
                    var note = new NoteModel();
                    note.Id = item.Id;

                    var userProfile = new UserProfileViewModel();
                    userProfile.Id                = item.CreatedBy.Id;
                    userProfile.DisplayName       = item.CreatedBy.DisplayName;
                    userProfile.Mail              = item.CreatedBy.Fields.Mail;
                    userProfile.UserPrincipalName = item.CreatedBy.Fields.UserPrincipalName;
                    userProfile.UserRoles         = await _userProfileHelpers.RolesToViewModelAsync(item.CreatedBy.Fields.UserRoles, requestId);

                    note.CreatedBy       = userProfile;
                    note.NoteBody        = item.NoteBody;
                    note.CreatedDateTime = item.CreatedDateTime;

                    viewModel.Notes.Add(note);
                }

                // DocumentAttachments
                viewModel.DocumentAttachments = new List <DocumentAttachmentModel>();
                if (entity.DocumentAttachments != null)
                {
                    foreach (var itm in entity.DocumentAttachments)
                    {
                        var doc = new DocumentAttachmentModel();
                        doc.Id            = itm.Id ?? String.Empty;
                        doc.FileName      = itm.FileName ?? String.Empty;
                        doc.Note          = itm.Note ?? String.Empty;
                        doc.Tags          = itm.Tags ?? String.Empty;
                        doc.Category      = new CategoryModel();
                        doc.Category.Id   = itm.Category.Id;
                        doc.Category.Name = itm.Category.Name;
                        doc.DocumentUri   = itm.DocumentUri;

                        viewModel.DocumentAttachments.Add(doc);
                    }
                }

                return(viewModel);
            }
            catch (Exception ex)
            {
                // TODO: _logger.LogError("MapToViewModelAsync error: " + ex);
                throw new ResponseException($"RequestId: {requestId} - OpportunityToViewModelAsync oppId: {oppId} - failed to map opportunity: {ex}");
            }
        }
コード例 #25
0
        public async Task <OpportunityViewModel> OpportunityToViewModelAsync(Opportunity entity, string requestId = "")
        {
            var oppId = entity.Id;

            try
            {
                //var entityDto = TinyMapper.Map<OpportunityViewModel>(entity);
                var viewModel = new OpportunityViewModel
                {
                    Id                   = entity.Id,
                    DisplayName          = entity.DisplayName,
                    Reference            = entity.Reference,
                    Version              = entity.Version,
                    OpportunityState     = OpportunityStateModel.FromValue(entity.Metadata.OpportunityState.Value),
                    OpportunityChannelId = entity.Metadata.OpportunityChannelId,
                    //TODO
                    TemplateLoaded = entity.TemplateLoaded,

                    //TODO : WAVE-4 GENERIC ACCELERATOR Change : start
                    MetaDataFields = entity.Metadata.Fields.Select(
                        field => new OpportunityMetaDataFields()
                    {
                        DisplayName = field.DisplayName,
                        FieldType   = field.FieldType,
                        Screen      = field.Screen,
                        Values      = field.Values
                    }
                        ).ToList(),
                    //TODO : WAVE-4 GENERIC ACCELERATOR Change : end
                    Customer = new CustomerModel
                    {
                        DisplayName = entity.Metadata.Customer.DisplayName,
                        Id          = entity.Metadata.Customer.Id,
                        ReferenceId = entity.Metadata.Customer.ReferenceId
                    },
                    TeamMembers = new List <TeamMemberModel>(),
                    Notes       = new List <NoteModel>(),
                    Checklists  = new List <ChecklistModel>()
                };

                //DealType
                var dealTypeFlag = false;
                dealTypeFlag = entity.Content.Template is null || entity.Content.Template.Id is null;
                if (!dealTypeFlag)
                {
                    viewModel.Template = await _templateHelpers.MapToViewModel(entity.Content.Template);

                    //DealType Processes
                    var checklistPass = false;
                    foreach (var item in entity.Content.Template.ProcessList)
                    {
                        if (item.ProcessType.ToLower() == "checklisttab" && checklistPass == false)
                        {
                            viewModel = await _checkListProcessService.MapToModelAsync(entity, viewModel, requestId);

                            checklistPass = true;
                        }
                        if (item.ProcessType.ToLower() == "customerdecisiontab")
                        {
                            viewModel = await _customerDecisionProcessService.MapToModelAsync(entity, viewModel, requestId);
                        }
                        if (item.ProcessType.ToLower() == "customerfeedbacktab")
                        {
                            viewModel = await _customerFeedbackProcessService.MapToModelAsync(entity, viewModel, requestId);
                        }
                        if (item.ProcessType.ToLower() == "proposalstatustab")
                        {
                            viewModel = await _proposalStatusProcessService.MapToModelAsync(entity, viewModel, requestId);
                        }
                    }
                }


                // TeamMembers
                foreach (var item in entity.Content.TeamMembers.ToList())
                {
                    var memberModel = new TeamMemberModel();
                    memberModel.RoleId            = item.RoleId; //await _userProfileHelpers.RoleToViewModelAsync(item.AssignedRole, requestId);
                    memberModel.Id                = item.Id;
                    memberModel.DisplayName       = item.DisplayName;
                    memberModel.Mail              = item.Fields.Mail;
                    memberModel.UserPrincipalName = item.Fields.UserPrincipalName;
                    memberModel.Title             = item.Fields.Title ?? String.Empty;
                    memberModel.ProcessStep       = item.ProcessStep;
                    memberModel.Permissions       = new List <PermissionModel>();
                    memberModel.AdGroupName       = await _graphUserAppService.GetAdGroupName(item.RoleId, requestId);

                    memberModel.RoleName = item.RoleName;
                    foreach (var permission in item.Fields.Permissions)
                    {
                        memberModel.Permissions.Add(new PermissionModel {
                            Id = permission.Id, Name = permission.Name
                        });
                    }
                    memberModel.TeamsMembership = new TeamsMembershipModel()
                    {
                        Value = item.TeamsMembership.Value,
                        Name  = item.TeamsMembership.Name.ToString()
                    };
                    viewModel.TeamMembers.Add(memberModel);
                }

                // Notes
                foreach (var item in entity.Content.Notes.ToList())
                {
                    var note = new NoteModel();
                    note.Id = item.Id;

                    var userProfile = new UserProfileViewModel();
                    userProfile.Id                = item.CreatedBy.Id;
                    userProfile.DisplayName       = item.CreatedBy.DisplayName;
                    userProfile.Mail              = item.CreatedBy.Fields.Mail;
                    userProfile.UserPrincipalName = item.CreatedBy.Fields.UserPrincipalName;
                    userProfile.UserRoles         = await _userProfileHelpers.RolesToViewModelAsync(item.CreatedBy.Fields.UserRoles, requestId);

                    note.CreatedBy       = userProfile;
                    note.NoteBody        = item.NoteBody;
                    note.CreatedDateTime = item.CreatedDateTime;

                    viewModel.Notes.Add(note);
                }

                // DocumentAttachments
                viewModel.DocumentAttachments = new List <DocumentAttachmentModel>();
                if (entity.DocumentAttachments != null)
                {
                    foreach (var itm in entity.DocumentAttachments)
                    {
                        var doc = new DocumentAttachmentModel();
                        doc.Id            = itm.Id ?? String.Empty;
                        doc.FileName      = itm.FileName ?? String.Empty;
                        doc.Note          = itm.Note ?? String.Empty;
                        doc.Tags          = itm.Tags ?? String.Empty;
                        doc.Category      = new CategoryModel();
                        doc.Category.Id   = itm.Category.Id;
                        doc.Category.Name = itm.Category.Name;
                        doc.DocumentUri   = itm.DocumentUri;

                        viewModel.DocumentAttachments.Add(doc);
                    }
                }

                return(viewModel);
            }
            catch (Exception ex)
            {
                // TODO: _logger.LogError("MapToViewModelAsync error: " + ex);
                throw new ResponseException($"RequestId: {requestId} - OpportunityToViewModelAsync oppId: {oppId} - failed to map opportunity: {ex}");
            }
        }
コード例 #26
0
        public void TeamsGetAll_values()
        {
            var teamModel1 = new TeamModel
            {
                Id   = Guid.NewGuid(),
                Name = "TestTeamModel1"
            };

            var teamModel2 = new TeamModel
            {
                Id   = Guid.NewGuid(),
                Name = "TestTeamModel2"
            };

            var teamModel3 = new TeamModel
            {
                Id   = Guid.NewGuid(),
                Name = "TestTeamModel3"
            };


            var returnedModel1 = fixture.Repository.Create(teamModel1);
            var returnedModel2 = fixture.Repository.Create(teamModel2);
            var returnedModel3 = fixture.Repository.Create(teamModel3);

            Assert.NotNull(returnedModel1);
            Assert.NotNull(returnedModel2);
            Assert.NotNull(returnedModel3);

            UserModel userModel = new UserModel()
            {
                Id   = Guid.NewGuid(),
                Name = "UserName"
            };


            var teamMemberModel1 = new TeamMemberModel()
            {
                Id   = Guid.NewGuid(),
                User = userModel,
                Team = teamModel1
            };

            TeamMemberModel returnedTeamMemberModel1 = fixture.Repository.AddUserToTeam(teamMemberModel1);

            var teamMemberModel2 = new TeamMemberModel()
            {
                Id   = Guid.NewGuid(),
                User = userModel,
                Team = teamModel2
            };

            TeamMemberModel returnedTeamMemberModel2 = fixture.Repository.AddUserToTeam(teamMemberModel2);


            IEnumerable <TeamModel> teamModels = fixture.Repository.GetAll();

            var returnedTeamModel1 = teamModels.Single(m => m.Id == returnedModel1.Id);

            Assert.NotNull(returnedTeamModel1);
            Assert.Equal(returnedTeamModel1.Id, teamModel1.Id);
            Assert.Equal(returnedTeamModel1.Name, teamModel1.Name);

            var returnedTeamModel2 = teamModels.Single(m => m.Id == returnedModel2.Id);

            Assert.NotNull(returnedTeamModel2);
            Assert.Equal(returnedTeamModel2.Id, teamModel2.Id);
            Assert.Equal(returnedTeamModel2.Name, teamModel2.Name);


            var returnedTeamModel3 = teamModels.Single(m => m.Id == returnedModel3.Id);

            Assert.NotNull(returnedTeamModel2);
            Assert.Equal(returnedTeamModel3.Id, teamModel3.Id);
            Assert.Equal(returnedTeamModel3.Name, teamModel3.Name);

            // clean
            fixture.Repository.Delete(returnedModel1.Id);
            fixture.Repository.Delete(returnedModel2.Id);
            fixture.Repository.Delete(returnedModel3.Id);

            fixture.Repository.Delete(returnedTeamMemberModel1.Id);
            fixture.Repository.Delete(returnedTeamMemberModel2.Id);

            Assert.Empty(fixture.Repository.GetAll());
        }
コード例 #27
0
        public static TeamReport GetTeamReport(this UnitOfWork unit, string teamId, int year, int month, ModelFactory factory)
        {
            var employees = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).ToList();
            List <TeamMemberModel> reports = new List <TeamMemberModel>();
            decimal?hours = 0;

            var totalTeamHours = unit.Engagements.Get().Where(x => x.Team.Id == teamId)
                                 .Select(x => x.Employee)
                                 .SelectMany(x => x.Days)
                                 .Where(t => t.Date.Month == month && t.Date.Year == year)
                                 .Sum(p => p.Hours);

            DayStatisticModel statistika = new DayStatisticModel()
            {
                BusinessAbscenceDays    = 0,
                MissingEntries          = 0,
                OtherAbscenceDays       = 0,
                OvertimeHours           = 0,
                PercentageOfWorkingDays = 0,
                PublicHolidays          = 0,
                ReligiousDays           = 0,
                SickLeaveDays           = 0,
                VacationDays            = 0,
                WorkingDays             = 0
            };

            foreach (var employee in employees)
            {
                var days = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days)
                           .Where(x => x.Employee.Id == employee.Id &&
                                  x.Date.Year == year &&
                                  x.Date.Month == month);
                List <int> listDates = null;
                var        date      = new DateTime(year, month, 1);

                if (employee.BeginDate.Year == date.Year && employee.BeginDate.Month == date.Month &&
                    employee.BeginDate.Day < DateTime.DaysInMonth(year, month))
                {
                    listDates = DateTimeHelper.ListOfWorkingDays(year, month, employee.BeginDate.Day).ToList();
                }
                else
                {
                    listDates = DateTimeHelper.ListOfWorkingDays(year, month).ToList();
                }
                int workingDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days)
                                  .Where(x => x.Employee.Id == employee.Id &&
                                         x.Date.Year == year &&
                                         x.Date.Month == month &&
                                         x.Type.ToString() == "WorkingDay").Count();
                statistika.WorkingDays += workingDays;


                decimal?overtime = 0;
                foreach (var day in days)
                {
                    if (day.Hours > 8)
                    {
                        overtime += day.Hours - 8;
                    }
                    ;
                }
                ;
                statistika.OvertimeHours += overtime;

                int vacationDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                x.Date.Year == year &&
                                                                                                                                                x.Date.Month == month &&
                                                                                                                                                x.Type.ToString() == "Vacation").Count();
                statistika.VacationDays += vacationDays;

                int businessAbscenceDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                        x.Date.Year == year &&
                                                                                                                                                        x.Date.Month == month &&
                                                                                                                                                        x.Type.ToString() == "BusinessAbsence").Count();

                statistika.BusinessAbscenceDays += businessAbscenceDays;
                int publicHolidays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                  x.Date.Year == year &&
                                                                                                                                                  x.Date.Month == month &&
                                                                                                                                                  x.Type.ToString() == "PublicHoliday").Count();
                statistika.PublicHolidays += publicHolidays;

                int sickLeaveDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                 x.Date.Year == year &&
                                                                                                                                                 x.Date.Month == month &&
                                                                                                                                                 x.Type.ToString() == "SickLeave").Count();
                statistika.SickLeaveDays += sickLeaveDays;

                int religiousDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                 x.Date.Year == year &&
                                                                                                                                                 x.Date.Month == month &&
                                                                                                                                                 x.Type.ToString() == "ReligiousDay").Count();

                statistika.ReligiousDays += religiousDays;
                int otherAbsenceDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                    x.Date.Year == year &&
                                                                                                                                                    x.Date.Month == month &&
                                                                                                                                                    x.Type.ToString() == "OtherAbsence").Count();
                statistika.OtherAbscenceDays += otherAbsenceDays;

                decimal?totalhoursss = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                    x.Date.Year == year &&
                                                                                                                                                    x.Date.Month == month &&
                                                                                                                                                    x.Type.ToString() == "WorkingDay")
                                       .Select(x => x.Hours).DefaultIfEmpty(0).Sum();

                var missingEntries = (employee.BeginDate.Date > date.Date) ? 0 : listDates.Except(days.Select(x => x.Date.Day)).Count();
                statistika.MissingEntries += missingEntries;
                TeamMemberModel employeeModel = new TeamMemberModel()
                {
                    Employee = new BaseModel()
                    {
                        Id   = employee.Id,
                        Name = employee.FirstName + ' ' + employee.LastName
                    },
                    Days = new DayStatisticModel()
                    {
                        WorkingDays             = workingDays,
                        VacationDays            = vacationDays,
                        BusinessAbscenceDays    = businessAbscenceDays,
                        PublicHolidays          = publicHolidays,
                        SickLeaveDays           = sickLeaveDays,
                        ReligiousDays           = religiousDays,
                        OtherAbscenceDays       = otherAbsenceDays,
                        OvertimeHours           = overtime,
                        PercentageOfWorkingDays = Math.Round(100 * (double)workingDays / listDates.Count(), 2),
                        MissingEntries          = missingEntries,
                    },
                    TotalHours = totalhoursss
                };

                reports.Add(employeeModel);
                hours += employeeModel.TotalHours;
            }
            //foreach(var employee in reports)
            //{
            //    hours += employee.TotalHours;
            //}
            int numberOfEmployees = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Count();
            var fullworkingdays   = numberOfEmployees * DateTimeHelper.ListOfWorkingDays(year, month).Count();

            statistika.PercentageOfWorkingDays = Math.Round(100 * (double)statistika.WorkingDays / fullworkingdays);


            var report = new TeamReport()
            {
                Id   = teamId,
                Name = unit.Teams.Get(teamId).Name,
                NumberOfEmployees = numberOfEmployees,
                NumberOfProjects  = unit.Teams.Get(teamId).Projects.Count(),
                Dayss             = statistika,
                Reports           = reports,
                TotalHours        = totalTeamHours,
                Year  = year,
                Month = month
                        //Members = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(y=> GetPersonalReport(unit,y.Employee.Id, year,month,factory)).ToList()
                        //Ok(TimeUnit.GetPersonalReport(employeeId, year, month, TimeFactory));
            };

            return(report);
        }
コード例 #28
0
        public void TeamsGetAll_countOfValues()
        {
            var teamModel1 = new TeamModel
            {
                Id   = Guid.NewGuid(),
                Name = "TestTeamModel1"
            };

            var teamModel2 = new TeamModel
            {
                Id   = Guid.NewGuid(),
                Name = "TestTeamModel2"
            };

            var teamModel3 = new TeamModel
            {
                Id   = Guid.NewGuid(),
                Name = "TestTeamModel3"
            };


            var returnedModel1 = fixture.Repository.Create(teamModel1);
            var returnedModel2 = fixture.Repository.Create(teamModel2);
            var returnedModel3 = fixture.Repository.Create(teamModel3);

            Assert.NotNull(returnedModel1);
            Assert.NotNull(returnedModel2);
            Assert.NotNull(returnedModel3);

            UserModel userModel = new UserModel()
            {
                Id   = Guid.NewGuid(),
                Name = "UserName"
            };


            var teamMemberModel1 = new TeamMemberModel()
            {
                Id   = Guid.NewGuid(),
                User = userModel,
                Team = teamModel1
            };

            TeamMemberModel returnedTeamMemberModel1 = fixture.Repository.AddUserToTeam(teamMemberModel1);

            var teamMemberModel2 = new TeamMemberModel()
            {
                Id   = Guid.NewGuid(),
                User = userModel,
                Team = teamModel2
            };

            TeamMemberModel returnedTeamMemberModel2 = fixture.Repository.AddUserToTeam(teamMemberModel2);

            int countOfTeamModels = 3;

            Assert.Equal(fixture.Repository.GetAll().Count(), countOfTeamModels);

            // clean
            fixture.Repository.Delete(returnedModel1.Id);
            fixture.Repository.Delete(returnedModel2.Id);
            fixture.Repository.Delete(returnedModel3.Id);

            fixture.Repository.Delete(returnedTeamMemberModel1.Id);
            fixture.Repository.Delete(returnedTeamMemberModel2.Id);

            Assert.Empty(fixture.Repository.GetAll());
        }
コード例 #29
0
        public static TeamReport GetTeamReport(this UnitOfWork unit, string teamId, int year, int month, ModelFactory factory)
        {
            var employees = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).ToList();
            List <TeamMemberModel> reports = new List <TeamMemberModel>();
            decimal?hours           = 0;
            int     maxPossibleDays = noDaysInMonth(year, month);

            DayStatisticModel statictic = new DayStatisticModel()
            {
                BusinessAbscenceDays    = 0,
                MissingEntries          = 0,
                OtherAbscenceDays       = 0,
                OvertimeHours           = 0,
                PercentageOfWorkingDays = 0,
                PublicHolidays          = 0,
                ReligiousDays           = 0,
                SickLeaveDays           = 0,
                VacationDays            = 0,
                WorkingDays             = 0,
                MaxPossibleWorkingDays  = maxPossibleDays
            };

            var projects = unit.Projects.Get().ToList();

            foreach (var employee in employees)
            {
                decimal hoursTeam1 = 0;
                var     days       = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days)
                                     .Where(x => x.Employee.Id == employee.Id &&
                                            x.Date.Year == year &&
                                            x.Date.Month == month);
                List <int> listDates = null;
                var        date      = new DateTime(year, month, 1);

                if (employee.BeginDate.Year == date.Year && employee.BeginDate.Month == date.Month &&
                    employee.BeginDate.Day < DateTime.DaysInMonth(year, month))
                {
                    listDates = DateTimeHelper.ListOfWorkingDays(year, month, employee.BeginDate.Day).ToList();
                }
                else
                {
                    listDates = DateTimeHelper.ListOfWorkingDays(year, month).ToList();
                }

                int workingDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days)
                                  .Where(x => x.Employee.Id == employee.Id &&
                                         x.Date.Year == year &&
                                         x.Date.Month == month &&
                                         x.Type == DayType.WorkingDay).Count();

                statictic.WorkingDays += workingDays;

                //novoovovo

                //decimal totHours = 0;
                //foreach (var project in projects)
                //{
                //    var hoursPro = unit.Days.Get().Where(x => x.Date.Month == month && x.Date.Year == year).SelectMany(t => t.Tasks)
                //                         .Where(x => x.Project.Id == project.Id)
                //                         .Select(h => h.Hours)
                //                         .DefaultIfEmpty(0)
                //                         .Sum();
                //    totHours += hoursPro;
                //}

                //hoursTeam1 += totHours;


                decimal?overtime = 0;

                foreach (var day in days)
                {
                    if (day.Hours > 8)
                    {
                        overtime += day.Hours - 8;
                    }
                    ;
                }
                ;

                statictic.OvertimeHours += overtime;

                int vacationDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                x.Date.Year == year &&
                                                                                                                                                x.Date.Month == month &&
                                                                                                                                                x.Type == DayType.Vacation).Count();
                statictic.VacationDays += vacationDays;

                int businessAbscenceDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                        x.Date.Year == year &&
                                                                                                                                                        x.Date.Month == month &&
                                                                                                                                                        x.Type == DayType.BusinessAbsence).Count();

                statictic.BusinessAbscenceDays += businessAbscenceDays;

                int publicHolidays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                  x.Date.Year == year &&
                                                                                                                                                  x.Date.Month == month &&
                                                                                                                                                  x.Type == DayType.PublicHoliday).Count();

                statictic.PublicHolidays += publicHolidays;

                int sickLeaveDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                 x.Date.Year == year &&
                                                                                                                                                 x.Date.Month == month &&
                                                                                                                                                 x.Type == DayType.SickLeave).Count();

                statictic.SickLeaveDays += sickLeaveDays;

                int religiousDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                 x.Date.Year == year &&
                                                                                                                                                 x.Date.Month == month &&
                                                                                                                                                 x.Type == DayType.ReligiousDay).Count();

                statictic.ReligiousDays += religiousDays;

                int otherAbsenceDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                    x.Date.Year == year &&
                                                                                                                                                    x.Date.Month == month &&
                                                                                                                                                    x.Type == DayType.OtherAbsence).Count();

                statictic.OtherAbscenceDays += otherAbsenceDays;

                decimal?totalhoursss = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                    x.Date.Year == year &&
                                                                                                                                                    x.Date.Month == month && x.Type == DayType.WorkingDay)
                                       .Select(x => x.Hours).DefaultIfEmpty(0).Sum();

                var missingEntries = (employee.BeginDate.Date > date.Date) ? 0 : listDates.Except(days.Select(x => x.Date.Day)).Count();

                statictic.MissingEntries += missingEntries;

                TeamMemberModel employeeModel = new TeamMemberModel()
                {
                    Employee = new BaseModel()
                    {
                        Id   = employee.Id,
                        Name = employee.FirstName + ' ' + employee.LastName
                    },
                    Days = new DayStatisticModel()
                    {
                        WorkingDays             = workingDays,
                        VacationDays            = vacationDays,
                        BusinessAbscenceDays    = businessAbscenceDays,
                        PublicHolidays          = publicHolidays,
                        SickLeaveDays           = sickLeaveDays,
                        ReligiousDays           = religiousDays,
                        OtherAbscenceDays       = otherAbsenceDays,
                        OvertimeHours           = overtime,
                        PercentageOfWorkingDays = Math.Round(100 * (double)workingDays / listDates.Count(), 2),
                        MissingEntries          = missingEntries,
                        MaxPossibleWorkingDays  = maxPossibleDays
                    },
                    TotalHours = totalhoursss
                                 //TotalHours = hoursTeam1
                };

                reports.Add(employeeModel);
                hours += employeeModel.TotalHours;
            }

            var utilization = Math.Round(((decimal)statictic.WorkingDays / (decimal)noDaysInMonth(year, month)) * 100, 2);

            int numberOfEmployees = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Count();
            var fullworkingdays   = numberOfEmployees * DateTimeHelper.ListOfWorkingDays(year, month).Count();

            statictic.PercentageOfWorkingDays = Math.Round(100 * (double)statictic.WorkingDays / fullworkingdays);

            var report = new TeamReport()
            {
                Id   = teamId,
                Name = unit.Teams.Get(teamId).Name,
                NumberOfEmployees = numberOfEmployees,
                NumberOfProjects  = unit.Teams.Get(teamId).Projects.Count(),
                Days        = statictic,
                Reports     = reports,
                TotalHours  = hours,
                Year        = year,
                Month       = month,
                Utilization = utilization
            };

            return(report);
        }
コード例 #30
0
        public static TeamReport GetTeamReport(this UnitOfWork unit, string teamId, int year, int month, ModelFactory factory)
        {
            var date      = new DateTime(year, month, 1);
            var employees = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).Where(x => x.BeginDate < date).ToList();
            List <TeamMemberModel>            reports        = new List <TeamMemberModel>();
            List <PersonalReportProjectModel> ProjectDetails = new List <PersonalReportProjectModel>();

            var projects = unit.Teams.Get().Where(x => x.Id == teamId).SelectMany(t => t.Projects).ToList();

            decimal?hours = 0;
            var     numberOfEmployeesInTeam = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).Where(x => x.BeginDate < date).Count();

            DayStatisticModel statistika = new DayStatisticModel()
            {
                BusinessAbscenceDays    = 0,
                MissingEntries          = 0,
                OtherAbscenceDays       = 0,
                OvertimeHours           = 0,
                PercentageOfWorkingDays = 0,
                PublicHolidays          = 0,
                ReligiousDays           = 0,
                SickLeaveDays           = 0,
                VacationDays            = 0,
                WorkingDays             = 0
            };
            decimal?overtime = 0;

            foreach (var employee in employees)
            {
                int PTO  = 0;
                var days = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days)
                           .Where(x => x.Employee.Id == employee.Id &&
                                  x.Date.Value.Year == year &&
                                  x.Date.Value.Month == month).ToList();
                List <int> listDates = null;

                if (employee.BeginDate.Value.Year == date.Year && employee.BeginDate.Value.Month == date.Month &&
                    employee.BeginDate.Value.Day < DateTime.DaysInMonth(year, month))
                {
                    listDates = DateTimeHelper.ListOfWorkingDays(year, month, employee.BeginDate.Value.Day).ToList();
                }
                else
                {
                    listDates = DateTimeHelper.ListOfWorkingDays(year, month).ToList();
                }
                int workingDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days)
                                  .Where(x => x.Employee.Id == employee.Id &&
                                         x.Date.Value.Year == year &&
                                         x.Date.Value.Month == month &&
                                         x.Category.Description == "Working day").Count();
                statistika.WorkingDays += workingDays;


                overtime = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                        x.Date.Value.Year == year &&
                                                                                                                                        x.Date.Value.Month == month && x.Hours > 8)
                           .Select(x => x.Hours).DefaultIfEmpty(0).Sum();

                int overtimeCount = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days)
                                    .Where(x => x.Employee.Id == employee.Id &&
                                           x.Date.Value.Year == year &&
                                           x.Date.Value.Month == month && x.Hours > 8).Select(x => x.Hours).Count();
                overtime -= overtimeCount * 8;

                statistika.OvertimeHours += overtime;

                int vacationDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                x.Date.Value.Year == year &&
                                                                                                                                                x.Date.Value.Month == month &&
                                                                                                                                                x.Category.Description == "Vacation").Count();
                statistika.VacationDays += vacationDays;
                PTO += vacationDays;

                int businessAbscenceDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                        x.Date.Value.Year == year &&
                                                                                                                                                        x.Date.Value.Month == month &&
                                                                                                                                                        x.Category.Description == "Business absence").Count();

                statistika.BusinessAbscenceDays += businessAbscenceDays;
                int publicHolidays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                  x.Date.Value.Year == year &&
                                                                                                                                                  x.Date.Value.Month == month &&
                                                                                                                                                  x.Category.Description == "Public holiday").Count();
                statistika.PublicHolidays += publicHolidays;
                PTO += publicHolidays;

                int sickLeaveDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                 x.Date.Value.Year == year &&
                                                                                                                                                 x.Date.Value.Month == month &&
                                                                                                                                                 x.Category.Description == "Sick leave").Count();
                statistika.SickLeaveDays += sickLeaveDays;
                PTO += sickLeaveDays;

                int religiousDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                 x.Date.Value.Year == year &&
                                                                                                                                                 x.Date.Value.Month == month &&
                                                                                                                                                 x.Category.Description == "Religious day").Count();

                statistika.ReligiousDays += religiousDays;
                PTO += religiousDays;
                int otherAbsenceDays = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id &&
                                                                                                                                                    x.Date.Value.Year == year &&
                                                                                                                                                    x.Date.Value.Month == month &&
                                                                                                                                                    x.Category.Description == "Other absence").Count();
                statistika.OtherAbscenceDays += otherAbsenceDays;
                PTO += otherAbsenceDays;

                //decimal? totalhoursss = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(x => x.Employee).SelectMany(y => y.Days).Where(x => x.Employee.Id == employee.Id
                //                                        && x.Date.Value.Year == year
                //                                        && x.Date.Value.Month == month && x.Category.Description == "Working day")
                //                                        .Select(x => x.Hours).DefaultIfEmpty(0).Sum();

                decimal?totalhoursss = 0;

                foreach (var project in projects)
                {
                    var hoursAtProject = unit.Days.Get()
                                         .Where(d => d.Employee.Id == employee.Id && d.Date.Value.Year == year && d.Date.Value.Month == month)
                                         .SelectMany(a => a.Assignments).Where(a => a.Project.Id == project.Id).Select(h => h.Hours).DefaultIfEmpty(0).Sum();

                    totalhoursss += hoursAtProject;
                }
                var maxPossibleHoursEmployee = listDates.Count() * 8;
                var missingEntries           = (employee.BeginDate.Value.Date > date.Date) ? 0 : listDates.Except(days.Select(x => x.Date.Value.Day)).Count();
                statistika.MissingEntries += missingEntries;

                TeamMemberModel employeeModel = new TeamMemberModel()
                {
                    Employee = new BaseModel()
                    {
                        Id   = employee.Id,
                        Name = employee.FirstName + ' ' + employee.LastName,
                    },
                    PTO  = PTO,
                    Days = new DayStatisticModel()
                    {
                        WorkingDays             = workingDays,
                        VacationDays            = vacationDays,
                        BusinessAbscenceDays    = businessAbscenceDays,
                        PublicHolidays          = publicHolidays,
                        SickLeaveDays           = sickLeaveDays,
                        ReligiousDays           = religiousDays,
                        OtherAbscenceDays       = otherAbsenceDays,
                        OvertimeHours           = overtime,
                        PercentageOfWorkingDays = Math.Round(100 * (double)totalhoursss / maxPossibleHoursEmployee, 2),
                        MissingEntries          = missingEntries,
                    },
                    TotalHours       = totalhoursss,
                    MaxPossibleHours = maxPossibleHoursEmployee
                };

                reports.Add(employeeModel);
                hours += employeeModel.TotalHours;
            }
            //foreach(var employee in reports)
            //{
            //    hours += employee.TotalHours;
            //}
            //int numberOfEmployees = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Count();
            var fullworkingdays  = numberOfEmployeesInTeam * DateTimeHelper.ListOfWorkingDays(year, month).Count();
            int maxPossibleHours = NoDaysInMonth(year, month) * 8 * numberOfEmployeesInTeam;

            statistika.PercentageOfWorkingDays = Math.Round(100 * (double)hours / maxPossibleHours);
            foreach (var project in projects)
            {
                var hoursAtProject = unit.Days.Get()
                                     .Where(d => d.Date.Value.Year == year && d.Date.Value.Month == month)
                                     .SelectMany(a => a.Assignments).Where(a => a.Project.Id == project.Id).Select(h => h.Hours).DefaultIfEmpty(0).Sum();
                ProjectDetails.Add(new PersonalReportProjectModel()
                {
                    Id    = project.Id,
                    Name  = project.Name,
                    Hours = hoursAtProject
                });
            }

            var report = new TeamReport()
            {
                Id   = teamId,
                Name = unit.Teams.Get(teamId).Name,
                NumberOfEmployees = numberOfEmployeesInTeam,
                NumberOfProjects  = unit.Teams.Get(teamId).Projects.Count(),
                Dayss             = statistika,
                Reports           = reports,
                TotalHours        = hours,
                MaxPossibleHours  = maxPossibleHours,
                Year     = year,
                Month    = month,
                Projects = ProjectDetails
                           //Members = unit.Engagements.Get().Where(x => x.Team.Id == teamId).Select(y=> GetPersonalReport(unit,y.Employee.Id, year,month,factory)).ToList()
                           // Ok(TimeUnit.GetPersonalReport(employeeId, year, month, TimeFactory));
            };

            return(report);
        }