public StatusChangeInfo Stop(int id)
        {
            var fus = _repository.Get(id);

            if (fus == null)
            {
                return(StatusChangeInfo.NotExist(string.Format("W bazie nie istnieje serwis o id {0}.", id)));
            }

            StatusChangeInfo statusChangeInfo;

            var service = TryGetService(fus.MachineName, fus.Name, out statusChangeInfo);;

            if (service == null)
            {
                return(statusChangeInfo);
            }

            if (StatusChangeMachine.CanChange(service, ServiceControllerStatus.Stopped) == false)
            {
                return(StatusChangeInfo.Failure(string.Format("Nie można zatrzymać serwisu w statusie {0}.", service.Status)));
            }
            service.Stop();

            return(StatusChangeInfo.Success());
        }
        private ServiceController TryGetService(string machineName, string serviceName, out StatusChangeInfo statusChangeInfo)
        {
            var machine = _machineFactory.Get(machineName);

            if (machine.Exists() == false || machine.IsRunning() == false)
            {
                {
                    statusChangeInfo = StatusChangeInfo.NotExist(
                        string.Format("Maszyna o nazwie {0} nie istnieje lub jest wyłączona.", machineName));
                    return(null);
                }
            }

            var service = machine.GetService(serviceName);

            if (service == null)
            {
                statusChangeInfo = StatusChangeInfo.NotExist(
                    string.Format("Serwis o nazwie {0} nie istnieje.", serviceName));
                return(null);
            }

            statusChangeInfo = StatusChangeInfo.Success();

            return(service);
        }