protected override void Execute(CodeActivityContext eContext)
        {
            // Setup
            var context        = eContext.GetExtension <IWorkflowContext>();
            var serviceFactory = eContext.GetExtension <IOrganizationServiceFactory>();
            var service        = serviceFactory.CreateOrganizationService(context.UserId);


            var codeString = TimeZoneCodeString.Get(eContext);
            int code;

            if (String.IsNullOrWhiteSpace(codeString) ||
                !Int32.TryParse(codeString, out code))
            {
                var settings = UserSettings.GetUserSettings(service, context.UserId);
                code = (int)settings.Attributes["timezonecode"];
            }
            var req = new UtcTimeFromLocalTimeRequest {
                TimeZoneCode = code, LocalTime = LocalDateTime.Get(eContext)
            };

            var resp = (UtcTimeFromLocalTimeResponse)service.Execute(req);

            if (resp == null)
            {
                return;
            }
            UTCDateTime.Set(eContext, resp.UtcTime);
        }
        /// <summary>
        /// Retrieve <c>LocalTime</c> from <c>UtcTime</c> by <c>TimeZoneCode</c>.
        /// <para>
        /// For more information look at https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.utctimefromlocaltimerequest(v=crm.8).aspx
        /// </para>
        /// </summary>
        /// <param name="localTime">
        /// <see cref="DateTime"/> LocalTime
        /// </param>
        /// <param name="timezoneCode">You can use <see cref="TimezoneCode"/> data or directly provide Timezone Code.</param>
        /// <returns>
        /// <see cref="DateTime"/> UtcTime
        /// </returns>
        public DateTime GetUTCTimeFromLocalTime(DateTime localTime, int timezoneCode)
        {
            UtcTimeFromLocalTimeRequest request = new UtcTimeFromLocalTimeRequest()
            {
                LocalTime    = localTime,
                TimeZoneCode = timezoneCode
            };

            var serviceResponse = (UtcTimeFromLocalTimeResponse)this.OrganizationService.Execute(request);

            return(serviceResponse.UtcTime);
        }
Esempio n. 3
0
        public static Result RetrieveUTCTimeFromLocalTime(DateTime localTime, int timeZoneCode, CubeBase Cube)
        {
            var request = new UtcTimeFromLocalTimeRequest
            {
                TimeZoneCode = timeZoneCode,
                LocalTime = localTime
            };

            Result result = Cube.XRMActions.Execute<UtcTimeFromLocalTimeRequest, UtcTimeFromLocalTimeResponse>(request);

            return result;
        }
Esempio n. 4
0
        public static Result RetrieveUTCTimeFromLocalTime(DateTime localTime, int timeZoneCode, CubeBase Cube)
        {
            var request = new UtcTimeFromLocalTimeRequest
            {
                TimeZoneCode = timeZoneCode,
                LocalTime    = localTime
            };

            Result result = Cube.XRMActions.Execute <UtcTimeFromLocalTimeRequest, UtcTimeFromLocalTimeResponse>(request);

            return(result);
        }
        /// <summary>
        /// Retrieve <c>UtcTime</c> from <c>LocalTime</c> by <see cref="IOrganizationService"/> caller <c>System User</c> 's settings
        /// <para>
        /// For more information look at https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.utctimefromlocaltimerequest(v=crm.8).aspx
        /// </para>
        /// </summary>
        /// <param name="localTime">
        /// <see cref="DateTime"/> LocalTime
        /// </param>
        /// <returns>
        /// <see cref="DateTime"/> UtcTime
        /// </returns>
        public DateTime GetUTCTimeFromLocalTime(DateTime localTime)
        {
            var userSettings = GetCurrentUsersSettings(null);

            UtcTimeFromLocalTimeRequest request = new UtcTimeFromLocalTimeRequest()
            {
                LocalTime    = localTime,
                TimeZoneCode = userSettings.Item2
            };

            var serviceResponse = (UtcTimeFromLocalTimeResponse)this.OrganizationService.Execute(request);

            return(serviceResponse.UtcTime);
        }
        /// <summary>
        /// Convert UTC datetime from UTC datetime
        /// </summary>
        /// <param name="localDateTime"></param>
        /// <param name="timeZoneCode"></param>
        public DateTime UtcFromLocalDateTime(DateTime localDateTime, int?timeZoneCode)
        {
            if (!timeZoneCode.HasValue)
            {
                return(localDateTime);
            }

            UtcTimeFromLocalTimeRequest orgReq = new UtcTimeFromLocalTimeRequest
            {
                TimeZoneCode = timeZoneCode.Value,
                LocalTime    = localDateTime
            };

            return(Execute <UtcTimeFromLocalTimeResponse>(orgReq).UtcTime);
        }
        internal static DateTime RetrieveUTCTimeFromLocalTime(DateTime localTime, int?timeZoneCode, IOrganizationService service)
        {
            if (!timeZoneCode.HasValue)
            {
                return(DateTime.Now);
            }
            var request = new UtcTimeFromLocalTimeRequest
            {
                TimeZoneCode = timeZoneCode.Value,
                LocalTime    = localTime
            };
            var response = (UtcTimeFromLocalTimeResponse)service.Execute(request);

            return(response.UtcTime);
        }
        /// <summary>
        /// Retrieve <c>UtcTime</c> from <c>LocalTime</c> by specified <c>System User</c> 's settings.
        /// <para>
        /// For more information look at https://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.utctimefromlocaltimerequest(v=crm.8).aspx
        /// </para>
        /// </summary>
        /// <param name="localTime"><see cref="DateTime"/> LocalTime</param>
        /// <param name="userId">Systemuser Id</param>
        /// <returns>
        /// <see cref="DateTime"/> UtcTime
        /// </returns>
        public DateTime GetUTCTimeFromLocalTime(DateTime localTime, Guid userId)
        {
            ExceptionThrow.IfGuidEmpty(userId, "userId");

            var userSettings = GetCurrentUsersSettings(userId);

            UtcTimeFromLocalTimeRequest request = new UtcTimeFromLocalTimeRequest()
            {
                LocalTime    = localTime,
                TimeZoneCode = userSettings.Item2
            };

            var serviceResponse = (UtcTimeFromLocalTimeResponse)this.OrganizationService.Execute(request);

            return(serviceResponse.UtcTime);
        }
Esempio n. 9
0
        private static DateTime GetUtcTimeResponse(string time, int crmTimeZoneCode)
        {
            var context             = new XrmFakedContext();
            var organizationService = context.GetOrganizationService();

            var localTime = DateTime.SpecifyKind(DateTime.Parse(time), DateTimeKind.Local);
            var request   = new UtcTimeFromLocalTimeRequest
            {
                LocalTime    = localTime,
                TimeZoneCode = crmTimeZoneCode
            };

            var response = organizationService.Execute(request) as UtcTimeFromLocalTimeResponse;

            return(response.UtcTime);
        }
Esempio n. 10
0
        public static DateTime LocalTimeToUTC(DateTime localTime, int?timeZoneCode, ContextWrapper contextWrapper)
        {
            if (!timeZoneCode.HasValue)
            {
                return(localTime);
            }

            var request = new UtcTimeFromLocalTimeRequest
            {
                TimeZoneCode = timeZoneCode.Value,
                LocalTime    = DateTime.SpecifyKind(localTime, DateTimeKind.Local)
            };

            var response = (UtcTimeFromLocalTimeResponse)contextWrapper.service.Execute(request);

            return(response.UtcTime);
        }
        /// <summary>
        /// Retrieves the utc time from the local time
        /// </summary>
        /// <param name="localTime"></param>
        private void RetrieveUTCTimeFromLocalTime(DateTime localTime)
        {
            if (!_timeZoneCode.HasValue)
            {
                return;
            }

            var request = new UtcTimeFromLocalTimeRequest
            {
                TimeZoneCode = _timeZoneCode.Value,
                LocalTime    = localTime
            };

            var response = (UtcTimeFromLocalTimeResponse)_serviceProxy.Execute(request);

            Console.WriteLine(String.Concat("Calling UtcTimeFromLocalTimeRequest.  Local time: ",
                                            localTime.ToString("MM/dd/yyyy HH:mm:ss"), ". UTC time: ",
                                            response.UtcTime.ToString("MM/dd/yyyy HH:mm:ss")));
        }
        protected override void Execute(System.Activities.CodeActivityContext context)
        {
            var workflowContext = context.GetExtension <IWorkflowContext>();
            var service         = this.RetrieveOrganizationService(context);

            int day = this.Day.Get(context);

            if (day <= 0 || day > 31)
            {
                throw new ArgumentOutOfRangeException("Day outside of valid range (1 - 31)");
            }
            int month = this.MonthOfYearInt.Get(context);

            if (month < 1 || month > 12)
            {
                month = this.MonthOfYearPick.Get(context).Value - 222540000 + 1;
            }

            int year   = this.Year.Get(context);
            int hour   = this.HourOfDay023.Get(context);
            int minute = this.Minute.Get(context);

            DateTime parsedDate = DateTime.MinValue;

            try
            {
                parsedDate = new DateTime(year, month, day, hour, minute, 0, DateTimeKind.Unspecified);
            }
            catch (Exception ex)
            {
                throw new ArgumentException("Error parsing date: " + ex.Message);
            }

            TimeZoneSummary             timeZone = StaticMethods.CalculateTimeZoneToUse(this.TimeZoneOption.Get(context), workflowContext, service);
            UtcTimeFromLocalTimeRequest timeZoneChangeRequest = new UtcTimeFromLocalTimeRequest()
            {
                LocalTime = parsedDate, TimeZoneCode = timeZone.MicrosoftIndex
            };
            UtcTimeFromLocalTimeResponse timeZoneResponse = service.Execute(timeZoneChangeRequest) as UtcTimeFromLocalTimeResponse;
            DateTime adjustedDateTime = timeZoneResponse.UtcTime;

            this.ModifiedDate.Set(context, adjustedDateTime);
        }
        //public static DateTime Locally(this DateTime? date)
        //{
        //    return date == null ? default(DateTime) : RetrieveLocalTimeFromUtcTime2(date.Value);
        //}
        /// <summary>
        /// Retrive the UTC DateTime from Local Date time format.
        /// </summary>
        public static DateTime RetrieveUtcTimeFromLocalTime(IOrganizationService service, DateTime localTime)
        {
            if (localTime.Kind == DateTimeKind.Utc)
            {
                return localTime; // throw new Exception("Вы хотели привести UTC to UTC");
            }

            var retrieveCurrentUsersSettings = service.RetrieveCurrentUsersSettings();

            if (retrieveCurrentUsersSettings == null)
                throw new Exception("Не удалось определить настройки пользователя");

            var request = new UtcTimeFromLocalTimeRequest
            {
                TimeZoneCode = retrieveCurrentUsersSettings.Value,
                LocalTime = localTime
            };

            var response = (UtcTimeFromLocalTimeResponse)service.Execute(request);

            return response.UtcTime;
        }
Esempio n. 14
0
        //</snippetLocalTimeFromUTCTime>

        /// <summary>
        /// Retrieves the utc time from the local time
        /// </summary>
        /// <param name="localTime"></param>
        //<snippetUtcTimeFromLocalTime>
        private void RetrieveUTCTimeFromLocalTime(DateTime localTime)
        {
            if (!_timeZoneCode.HasValue)
                return;   

            var request = new UtcTimeFromLocalTimeRequest
            {
                TimeZoneCode = _timeZoneCode.Value,
                LocalTime = localTime
            };

            var response = (UtcTimeFromLocalTimeResponse)_serviceProxy.Execute(request);

            Console.WriteLine(String.Concat("Calling UtcTimeFromLocalTimeRequest.  Local time: ",
                localTime.ToString("MM/dd/yyyy HH:mm:ss"), ". UTC time: ",
                response.UtcTime.ToString("MM/dd/yyyy HH:mm:ss")));
        }