Exemplo n.º 1
0
        public void SaveToolkitCachesToolkitAndUser()
        {
            //Arrange
            _spClientMock.Setup(r => r.GetUserIdFromToolkit(It.IsAny <ToolkitUser>(), It.IsAny <Toolkit>())).Returns(1);
            var toolkits = new List <Toolkit>()
            {
                new Toolkit()
                {
                    CustomerName = "AKA",
                    Url          = "Test",
                    UserId       = 1
                },
            };
            var user = new ToolkitUser()
            {
                Name     = "Morten",
                Password = "******",
            };


            //Act
            _timeManager.SyncToolkits(user, toolkits);

            //Assert
            var privateObj = new PrivateObject(_timeManager);
            var privInfo   = privateObj.GetField("_toolkitInfo");
            var privUser   = privateObj.GetField("_toolkitUser");

            Assert.AreEqual(toolkits, privInfo);
            Assert.AreEqual(user, privUser);
        }
Exemplo n.º 2
0
        public virtual void SyncToolkits(ToolkitUser toolkitUser, List <Toolkit> toolkits)
        {
            //Get user ids
            //foreach (var tk in toolkits)

            for (var i = 0; i < toolkits.Count; i++)
            {
                var tk = toolkits[i];

                tk.CustomerName = GetCustomerNameFromUrl(tk);

                if (tk.UserId == 0)
                {
                    tk.UserId = _sharepointClient.GetUserIdFromToolkit(toolkitUser, tk);
                }

                if (_toolkits.IsNullOrEmpty() || ToolkitInfoChanged(tk, _toolkits))
                {
                    tk.Teams = _sharepointClient.GetTeamsFromToolkit(toolkitUser, tk);
                    tk       = _sharepointClient.GetTimeslotInformationFromToolkit(toolkitUser, tk);
                }

                toolkits[i] = tk;
            }

            //call repo to save
            _toolkitRepository.SaveData(toolkits);

            _toolkits    = toolkits;
            _toolkitUser = toolkitUser;
        }
Exemplo n.º 3
0
        /// <summary>
        /// Call Sharepoint and do clean up for stored timeregs
        /// </summary>
        public virtual void SyncTimeregs(List <Timeregistration> timeregs)
        {
            //TODO: Add logging + give user feedback when timeregs are synchronised.
            _toolkitUser = _toolkitUser ?? _toolkitUserRepository.GetData();
            _toolkits    = _toolkits ?? _toolkitRepository.GetData();

            var distinctTkDisplayNames = timeregs.Select(x => x.ToolkitDisplayName).Distinct();

            foreach (var tkDisplayName in distinctTkDisplayNames)
            {
                var timeregsInTk = timeregs.Where(x => x.ToolkitDisplayName == tkDisplayName).ToList();
                var tk           = _toolkits.Single(x => x.DisplayName == tkDisplayName);
                _sharepointClient.MakeTimeregistrations(timeregsInTk, _toolkitUser, tk);
            }

            //Send to Sharepoint
            foreach (var timereg in timeregs.Where(tr => !tr.IsSynchronized))
            {
                var toolkit = GetRelevantToolkit(timereg);
                var id      = _sharepointClient.MakeTimeregistration(timereg, _toolkitUser, toolkit);

                timereg.IsSynchronized = id != -1;
            }

            _timeregistrationRepository.SaveData(timeregs);
        }
Exemplo n.º 4
0
        public virtual List <Team> GetTeamsFromToolkit(ToolkitUser tkUser, Toolkit tk)
        {
            var clientContext = new ClientContext(tk.Url)
            {
                Credentials = new NetworkCredential(tkUser.Name, tkUser.SecurePassword, tkUser.Domain)
            };

            return(tk.GetTeamsWithoutSLA ?  GetAllTeams(clientContext) : GetTeamsWithActiveSLA(clientContext));
        }
Exemplo n.º 5
0
        public virtual int MakeTimeregistration(Timeregistration timereg, ToolkitUser toolkitUser, Toolkit toolkit)
        {
            var clientContext = new ClientContext(toolkit.Url)
            {
                Credentials = new NetworkCredential(toolkitUser.Name, toolkitUser.SecurePassword, toolkitUser.Domain)
            };

            const string timeregList    = "tidsregistrering";
            var          sharepointList = clientContext.Web.Lists.GetByTitle(timeregList);

            clientContext.Load(sharepointList);
            clientContext.ExecuteQuery();

            var itemCreateInfo     = new ListItemCreationInformation();
            var sharepointListItem = sharepointList.AddItem(itemCreateInfo);

            var success = timereg.CouldConvertDurationToHours();

            if (!success)
            {
                return(-1);
            }

            var doneBy = new SPFieldLookupValue(toolkit.UserId, toolkitUser.Name);
            var author = new SPFieldLookupValue(toolkit.UserId, toolkitUser.Name);

            if (timereg.IsWorkPackage)
            {
                sharepointListItem["Case"] = FindRelatedCaseForWorkPackage(clientContext, timereg.CaseId);
                var toolkitWorkPackage = new SPFieldLookupValue(timereg.CaseId, "");
                sharepointListItem["WorkPackage"] = toolkitWorkPackage;
            }
            else
            {
                var toolkitCase = new SPFieldLookupValue(timereg.CaseId, $"{toolkit.CustomerName}-{timereg.CaseId}");
                sharepointListItem["Case"] = toolkitCase;
            }

            //sharepointListItem["Hours"] = timereg.Hours;
            sharepointListItem["Hours"]    = timereg.Hours;
            sharepointListItem["DoneBy"]   = doneBy;
            sharepointListItem["Author"]   = author;
            sharepointListItem["DoneDate"] = timereg.DoneDate;

            try
            {
                sharepointListItem.Update();
                clientContext.ExecuteQuery();
                return(sharepointListItem.Id);
            }
            catch
            {
                return(-1);
            }
        }
Exemplo n.º 6
0
        public void SaveUserInfoToRepoTest()
        {
            _repo = new Repository <ToolkitUser>();
            var userInfo = new ToolkitUser
            {
                Name     = "MOMA",
                Password = @"blablabla"
            };

            var success = _repo.SaveData(userInfo);

            Assert.IsTrue(success);
        }
Exemplo n.º 7
0
        public virtual int GetUserIdFromToolkit(ToolkitUser toolkitUser, Toolkit toolkit)
        {
            var clientContext  = new ClientContext(toolkit.Url);
            var userCollection = clientContext.Web.SiteUsers;

            clientContext.Load(userCollection);
            clientContext.ExecuteQuery();

            var email = $"{toolkitUser.Name}@netcompany.com";
            var user  = userCollection.GetByEmail(email);

            clientContext.Load(user);
            clientContext.ExecuteQuery();

            return(user.Id);
        }
Exemplo n.º 8
0
        public void SaveAndGetUserInfoToRepoTest()
        {
            _repo = new Repository <ToolkitUser>();
            var userInfo = new ToolkitUser
            {
                Name     = "Testname",
                Password = @"o_v2\J;CRpiR/mx:hx1/3d=PveE&LijSr,+k@PXL'UTH)"
            };

            var success = _repo.SaveData(userInfo);

            var retrievedUser = _repo.GetData();

            Assert.IsTrue(success);
            Assert.AreEqual(userInfo.Name, retrievedUser.Name);
            Assert.AreEqual(userInfo.Password, retrievedUser.Password);
        }
Exemplo n.º 9
0
        public TimeManager(IRepository <ToolkitUser> tkUserRepo, IRepository <List <Toolkit> > tkRepo,
                           IRepository <List <Timeregistration> > timeregRepo, ISharepointClient spClient, IEncryption encryptionManager)
        {
            _toolkitUserRepository      = tkUserRepo;
            _toolkitRepository          = tkRepo;
            _timeregistrationRepository = timeregRepo;
            _sharepointClient           = spClient;

            UserInfo = _toolkitUserRepository.GetData();
            if (UserInfo.Password?.Length > 0)
            {
                UserInfo.SecurePassword = new NetworkCredential("", encryptionManager.DecryptText(UserInfo.Password))
                                          .SecurePassword;
            }

            _toolkits = _toolkitRepository.GetData();
        }
Exemplo n.º 10
0
        public virtual Toolkit GetTimeslotInformationFromToolkit(ToolkitUser tkUser, Toolkit tk)
        {
            var clientContext = new ClientContext(tk.Url)
            {
                Credentials = new NetworkCredential(tkUser.Name, tkUser.SecurePassword, tkUser.Domain)
            };

            const string list  = "tidsregistrering";
            var          oList = clientContext.Web.Lists.GetByTitle(list);

            clientContext.Load(oList);
            clientContext.ExecuteQuery();

            var usesTimeslots = CheckIfToolkitUsesTimeslots(clientContext, oList, tk);

            if (!usesTimeslots)
            {
                return(tk);
            }

            var timeregsWithTimeslot = GetTopTimeregsWithTimeslot(clientContext, oList, tk);

            var casesForTimeregsWithTimeslot =
                GetCasesForTimeregsWithTimeslot(clientContext, timeregsWithTimeslot);

            var teamsUsingTimeslots = casesForTimeregsWithTimeslot.GroupBy(tkCase => tkCase.Team)
                                      .Select(tkCase => tkCase.First()).OrderBy(tkCase => tkCase.Team).ToList();

            foreach (var tkCase in teamsUsingTimeslots)
            {
                foreach (var team in tk.Teams)
                {
                    if (team.Name == tkCase.Team)
                    {
                        team.UsesTimeslots = true;
                    }
                }
            }

            tk.Timeslots = tk.TimeslotFieldName == "TimeSlot" ? ExtractTimeslotsFromTimeslotList(clientContext) : ExtractTimeslotsFromTimeregList(clientContext, tk);

            return(tk);
        }
Exemplo n.º 11
0
        public void Init()
        {
            _toolkitUserRepository = new Repository <ToolkitUser>();

            _toolkitUser = _toolkitUserRepository.GetData();

            try
            {
                _toolkitUser.SecurePassword =
                    new NetworkCredential("", _encryptionManager.DecryptText(_toolkitUser.Password)).SecurePassword;
            }
            catch (Exception)
            {
                _toolkitUser.SecurePassword = new NetworkCredential("", "").SecurePassword;
            }
            _toolkitUser.Password = "";

            _sharepointClient = new SharepointClient();
            _clientContext    = new ClientContext("https://goto.netcompany.com/cases/GTO22/NCMOD")
            {
                Credentials = new NetworkCredential(_toolkitUser.Name, _toolkitUser.SecurePassword, _toolkitUser.Domain)
            };
        }
Exemplo n.º 12
0
        //TODO: Add support for multiple timeregs per day for a case (i.e. group them by case id)
        //Do some loop over list where we create Microsoft.SharePoint.Client.ListItem and put into SP.List oList -- SEE UNIT TEST PROJECT
        //Send to Toolkit -- SEE UNIT TEST PROJECT
        public virtual void MakeTimeregistrations(IEnumerable <Timeregistration> timeregs, ToolkitUser toolkitUser, Toolkit toolkit)
        {
            var clientContext = new ClientContext(toolkit.Url)
            {
                Credentials = new NetworkCredential(toolkitUser.Name, toolkitUser.SecurePassword, toolkitUser.Domain)
            };

            const string timeregSpListName = "tidsregistrering";
            var          timeregSpList     = clientContext.Web.Lists.GetByTitle(timeregSpListName);

            clientContext.Load(timeregSpList);
            clientContext.ExecuteQuery();

            var listItems = new Dictionary <CaseDateTimeslot, ListItem>();

            var doneBy         = new SPFieldLookupValue(toolkit.UserId, toolkitUser.Name);
            var author         = new SPFieldLookupValue(toolkit.UserId, toolkitUser.Name);
            var itemCreateInfo = new ListItemCreationInformation();

            var timeregsByCaseIdDateTimeslot = GroupTimeregistrations(timeregs);

            foreach (var caseDateTimeslotGroup in timeregsByCaseIdDateTimeslot)
            {
                var sharepointListItem = timeregSpList.AddItem(itemCreateInfo);

                var caseDateTimeslot = caseDateTimeslotGroup.Key;
                var toolkitCase      = new SPFieldLookupValue(caseDateTimeslot.CaseId, $"{toolkit.CustomerName}-{caseDateTimeslot.CaseId}");
                var doneDate         = caseDateTimeslot.Date;
                var hours            = CalculateDuration(caseDateTimeslotGroup.Value);

                sharepointListItem["Hours"]    = hours;
                sharepointListItem["DoneBy"]   = doneBy;
                sharepointListItem["Author"]   = author;
                sharepointListItem["Case"]     = toolkitCase;
                sharepointListItem["DoneDate"] = doneDate;

                sharepointListItem.Update();
                listItems.Add(caseDateTimeslot, sharepointListItem);
            }

            try
            {
                clientContext.ExecuteQuery();
            }
            catch (Exception)
            {
                throw new Exception($"Unable to save timeregs to Toolkit. Toolkit: DisplayName={toolkit.DisplayName}, Url={toolkit.Url}");
            }

            foreach (var item in listItems)
            {
                var isSynchronised = item.Value.Id != -1;
                foreach (var timereg in timeregsByCaseIdDateTimeslot[item.Key])
                {
                    timereg.IsSynchronized = isSynchronised;
                }
            }
        }