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)); }
// 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)); } } }
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)); }
/// <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)); }
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); }
public ActionResult Create() { var model = new TeamMemberModel(); model.IsActive = true; model.CreateDateUtc = DateTime.UtcNow; return(View(model)); }
public TeamMember TeamMemberModelToTeamMemberEntity(TeamMemberModel model) { return(new TeamMember { Id = model.Id, User = UserModelToUserEntity(model.User), Team = TeamModelToTeamEntity(model.Team) }); }
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")); }
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)); } }
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); }
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); }
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()); }
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()); }
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); }
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); }
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); }
// 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)); } } }
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); }
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); }
public TeamMemberModel GetMember(TeamMemberModel model) { throw new NotImplementedException(); }
internal RestTeamMember(RestDiscordClient client, TeamMemberModel model) : base(client, model) { MembershipState = model.MembershipState; Permissions = model.Permissions.ToImmutableArray(); }
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")); }
internal RestTeamMember(RestTeam team, TeamMemberModel model) : base(team.Client, model.User) { Team = team; MembershipState = model.MembershipState; Permissions = model.Permissions.ReadOnly(); }
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}"); } }
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}"); } }
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()); }
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); }
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()); }
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); }
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); }