private void DeleteEvents2Weekly(WeeklyRuleConfiguration config)
        {
            var sql       = "DELETE FROM Event2WeeklyRule WHERE WeeklyRuleId = @WeeklyRuleId";
            var parameter = new SqlParameter("@WeeklyRuleId", config.Id);

            ExecuteNonQuery(sql, parameter);
        }
Ejemplo n.º 2
0
        private MvcHtmlString WeeklyDetails(WeeklyRuleConfiguration config)
        {
            var builder = new StringBuilder();

            builder.AppendFormat("{0}: {1}<br />", Strings.Admin.RuleDetails.InputLabelStatus, Strings.Admin.GetStatusName(config.AvailabilityStatus));
            builder.AppendFormat("{0}: {1}<br />", Strings.Admin.RuleDetails.InputLabelDayOfWeek, DateTimeFormatInfo.CurrentInfo.GetDayName(config.DayOfWeek));
            builder.AppendFormat("{0}: {1}<br />", Strings.Admin.RuleDetails.InputLabelTime, config.Time.HasValue ? config.Time.Value.ToString("hh\\:mm") : "-");
            builder.AppendFormat("{0}: {1}<br />", Strings.Admin.RuleDetails.InputLabelEndTime, config.EndTime.HasValue ? config.EndTime.Value.ToString("hh\\:mm") : "-");
            builder.AppendFormat("{0}: {1}<br />", Strings.Admin.RuleDetails.InputLabelStartDate, config.StartDate.HasValue ? config.StartDate.Value.ToShortDateString() : "-");

            if (config.EventIds.Any())
            {
                builder.AppendFormat("{0}: <br />", Strings.Admin.RuleDetails.InputLabelRuleScope);

                foreach (var id in config.EventIds)
                {
                    builder.AppendFormat("- {0}<br />", Events.FirstOrDefault(e => e.Id == id)?.Name ?? Strings.Admin.Settings.DeactivatedEvent);
                }
            }
            else
            {
                builder.AppendFormat("{0}: {1}<br />", Strings.Admin.RuleDetails.InputLabelRuleScope, Strings.Admin.RuleDetails.ScopeAllEvents);
            }

            return(new MvcHtmlString(builder.ToString()));
        }
        private void UpdateWeekly(WeeklyRuleConfiguration config)
        {
            var sql        = @"
			UPDATE
				WeeklyRule
			SET
				AvailabilityStatusId = @AvailabilityStatusId,
				[DayOfWeek] = @DayOfWeek,
				StartDate = @StartDate,
				[Time] = @Time,
                EndTime = @EndTime
			WHERE
				Id = @Id"                ;
            var parameters = new[]
            {
                new SqlParameter("@Id", config.Id),
                new SqlParameter("@AvailabilityStatusId", config.AvailabilityStatus),
                new SqlParameter("@DayOfWeek", config.DayOfWeek),
                new SqlParameter("@StartDate", (object)config.StartDate ?? DBNull.Value),
                new SqlParameter("@Time", (object)config.Time ?? DBNull.Value),
                new SqlParameter("@EndTime", (object)config.EndTime ?? DBNull.Value)
            };

            ExecuteNonQuery(sql, parameters);

            DeleteEvents2Weekly(config);
            SaveEvents2Weekly(config);
        }
 public static void MapFromEntity(this WeeklyRuleModel model, WeeklyRuleConfiguration rule)
 {
     model.Id        = rule.Id;
     model.Status    = rule.AvailabilityStatus;
     model.Day       = rule.DayOfWeek;
     model.StartDate = rule.StartDate.ToString("dd.MM.yyyy");
     model.Time      = rule.Time.ToString("hh\\:mm");
     model.EndTime   = rule.EndTime.ToString("hh\\:mm");
     model.EventIds  = rule.EventIds.Select(i => i.ToString()).ToArray();
 }
        private RuleConfiguration MapWeekly(SqlDataReader reader)
        {
            var config = new WeeklyRuleConfiguration();

            config.Id = (int)reader["wr_Id"];
            config.AvailabilityStatus = (AvailabilityStatus)reader["wr_AvailabilityStatusId"];
            config.DayOfWeek          = (DayOfWeek)reader["wr_DayOfWeek"];
            config.StartDate          = reader["wr_StartDate"] as DateTime?;
            config.Time    = reader["wr_Time"] as TimeSpan?;
            config.EndTime = reader["wr_EndTime"] as TimeSpan?;

            return(config);
        }
        public static void MapToEntity(this WeeklyRuleModel model, WeeklyRuleConfiguration rule)
        {
            if (model.Id.HasValue)
            {
                rule.Id = model.Id.Value;
            }

            rule.AvailabilityStatus = model.Status.Value;
            rule.DayOfWeek          = model.Day.Value;
            rule.StartDate          = DateTimeUtility.NullableDateTimeFor(model.StartDate);
            rule.Time     = DateTimeUtility.NullableTimeSpanFor(model.Time);
            rule.EndTime  = DateTimeUtility.NullableTimeSpanFor(model.EndTime);
            rule.EventIds = model.EventIds?.Select(i => int.Parse(i)).ToList();
        }
        private void SaveWeekly(WeeklyRuleConfiguration config)
        {
            var sql = @"
			INSERT INTO
				WeeklyRule(RuleId, AvailabilityStatusId, [DayOfWeek], StartDate, [Time], EndTime)
			VALUES
				(@RuleId, @AvailabilityStatusId, @DayOfWeek, @StartDate, @Time, @EndTime);
            SELECT SCOPE_IDENTITY()";

            var parameters = new[]
            {
                new SqlParameter("@RuleId", config.RuleId),
                new SqlParameter("@AvailabilityStatusId", config.AvailabilityStatus),
                new SqlParameter("@DayOfWeek", config.DayOfWeek),
                new SqlParameter("@StartDate", (object)config.StartDate ?? DBNull.Value),
                new SqlParameter("@Time", (object)config.Time ?? DBNull.Value),
                new SqlParameter("@EndTime", (object)config.EndTime ?? DBNull.Value)
            };

            config.Id = Convert.ToInt32(ExecuteScalar(sql, parameters));

            SaveEvents2Weekly(config);
        }
        private void LoadEvents2Weekly(WeeklyRuleConfiguration config)
        {
            var sql       = "SELECT * FROM Event2WeeklyRule WHERE WeeklyRuleId = @Id";
            var parameter = new SqlParameter("@Id", config.Id);

            using (var transaction = new TransactionScope())
                using (var connection = NewSqlConnection())
                    using (var command = new SqlCommand(sql, connection))
                    {
                        connection.Open();
                        command.Parameters.Add(parameter);

                        using (var reader = command.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                config.EventIds.Add((int)reader["EventId"]);
                            }
                        }

                        transaction.Complete();
                    }
        }
        private void SaveEvents2Weekly(WeeklyRuleConfiguration config)
        {
            if (config.EventIds == null)
            {
                return;
            }

            foreach (var id in config.EventIds)
            {
                var sql = @"
				INSERT INTO
					Event2WeeklyRule(EventId, WeeklyRuleId)
				VALUES
					(@EventId, @WeeklyRuleId)"                    ;

                var parameters = new[]
                {
                    new SqlParameter("@EventId", id),
                    new SqlParameter("@WeeklyRuleId", config.Id)
                };

                ExecuteNonQuery(sql, parameters);
            }
        }