public void SyncDate(DateTime from, DateTime to)
        {
            var fieldControlConfiguration = new FieldControlApi.Configuration.AppSettingsConfiguration();
            var client = new Client(fieldControlConfiguration);

            var authenticationCache = new SimpleFileCache("authentication");
            var accessToken         = authenticationCache.GetOrPut(() => {
                client.Authenticate();
                return(client.AuthenticationToken);
            });

            client.AuthenticationToken = accessToken;

            FileLog.WriteJson(fieldControlConfiguration);
            FileLog.WriteJson(client);

            var cPlusConfiguration = new CPlus.Configurations.AppSettingsConfiguration();
            var cPlusOrdersQuery   = new OrdersQuery(cPlusConfiguration);
            var orderDao           = new OrderDao(cPlusConfiguration);

            FileLog.WriteJson(cPlusConfiguration);

            var orders     = cPlusOrdersQuery.Execute(from, to);
            var activities = client.Execute(new GetActivitiesRequest(from, to));

            FileLog.WriteJson(orders);
            FileLog.WriteJson(activities);

            var       geoCoderConfiguration = new AppSettingsGeoCoderConfiguration();
            IGeocoder geocoder = new GoogleGeocoder()
            {
                ApiKey = geoCoderConfiguration.GoogleKey
            };

            var services  = client.Execute(new GetServicesRequest());
            var employees = client.Execute(new GetActiveEmployeesRequest(from));

            var activityConveter = new ActivityConverter(
                services: services,
                employees: employees,
                customerFieldControlService: new CustomerFieldControlService(client, geocoder)
                );

            FileLog.WriteJson(services);
            FileLog.WriteJson(employees);

            var commands = new List <ICommand>()
            {
                new CreateFieldControlActivityCommand(orders, activities, activityConveter, client),
                new UpdateCPlusOrderStatusCommand(orders, activities, orderDao)
            };

            commands.ForEach(command => {
                command.Run();
            });
        }
Beispiel #2
0
 public CreateFieldControlActivityCommand(IEnumerable <Order> orders,
                                          IEnumerable <Activity> activities,
                                          ActivityConverter conveter,
                                          Client fieldControlClient)
 {
     _orders             = orders;
     _conveter           = conveter;
     _activites          = activities;
     _fieldControlClient = fieldControlClient;
 }
        public void ConvertFrom_GivenAnOrder_ShouldBeConvertedAsExpected()
        {
            var services = new List <Service>()
            {
                new Service()
                {
                    Id = 1, Description = "Limpeza"
                },
                new Service()
                {
                    Id = 2, Description = "Instalacao"
                },
            };

            var employees = new List <Employee>()
            {
                new Employee()
                {
                    Id = 3, Name = "Luiz Freneda"
                },
                new Employee()
                {
                    Id = 5, Name = "Eduardo Santos"
                },
            };

            var activity = new ActivityConverter(services, employees, null).ConvertFrom(new Order()
            {
                Identifier    = "OS 123",
                Description   = "Order description",
                Duration      = 1,
                ScheduledDate = new DateTime(2015, 5, 15),
                ScheduledTime = "09:00:00",
                StatusName    = "Agendado",

                ServiceName  = "Limpeza",
                EmployeeName = "Luiz Freneda",
            });

            activity
            .AssertProperties()
            .EnsureThat(c => c.Identifier).ShouldBe("OS 123")
            .And(c => c.Description).ShouldBe("Order description")
            .And(c => c.Duration).ShouldBe(60)
            .And(c => c.ScheduledTo).ShouldBe(new DateTime(2015, 5, 15))
            .And(c => c.TimeFixed).ShouldBe(true)
            .And(c => c.FixedStartTime).ShouldBe("09:00")
            .And(c => c.Status).ShouldBe(FieldControlApi.Resources.ActivityStatus.Scheduled)
            .And(c => c.ServiceId).ShouldBe(1)
            .And(c => c.EmployeeId).ShouldBe(3)
            .Assert();
        }
Beispiel #4
0
        public async Task <IActionResult> GetAsync([FromRoute] string id, CancellationToken cancellationToken)
        {
            if (id == null)
            {
                var error = ServiceErrorResponses.InvalidRouteParameter("activityId");
                return(this.BadRequest(error));
            }

            var modelActivity = await activityRepository.GetByIdAsync(id);

            if (modelActivity == null)
            {
                var message = "Activity with id " + id + " not found.";
                var error   = ServiceErrorResponses.NoSuchObject("Activity", message);
                return(this.NotFound(error));
            }
            var clientActivity = ActivityConverter.Convert(modelActivity);

            return(Ok(clientActivity));
        }
Beispiel #5
0
        public async Task <IActionResult> CreateAsync([FromBody] Client.ActivityBuildInfo buildInfo,
                                                      CancellationToken cancellationToken)
        {
            if (buildInfo == null)
            {
                var error = ServiceErrorResponses.BodyIsMissing("ActivityCreationInfo");
                return(this.BadRequest(error));
            }
            var userId = User.FindFirstValue("userId");

            if (userId == null)
            {
                var error = ServiceErrorResponses.InvalidClaims("userId");
                return(this.BadRequest(error));
            }

            var maraphoneId = buildInfo.MaraphoneId;
            var maraphone   = await maraphoneRepository.GetAsync(maraphoneId, cancellationToken);

            if (maraphone == null)
            {
                var error = ServiceErrorResponses.NoSuchObject("Maraphone", "Maraphone not found");
                return(this.NotFound(error));
            }

            var duration = maraphone.Duration;
            var endAt    = buildInfo.StartAt + duration;

            var activityCreationInfo = new ActivityCreationInfo(buildInfo.MaraphoneId, buildInfo.Tags,
                                                                userId, buildInfo.Experts, buildInfo.StartAt, endAt);

            var modelActivity = await activityRepository.CreateAsync(activityCreationInfo, endAt, cancellationToken);

            var clientActivity = ActivityConverter.Convert(modelActivity);

            return(CreatedAtRoute(
                       "GetActivity",
                       new { id = clientActivity.Id },
                       clientActivity));
        }