ASP.NET MVC: как я могу поместить StartDate текущей записи в EndDate предыдущей записи - PullRequest
0 голосов
/ 02 января 2019

У меня есть класс, который назначает встречи, человек, назначающий встречи, вставляет только дату и время начала, но дата окончания должна совпадать с датой начала следующих встреч. Моя трудность заключается в том, чтобы предыдущие встречи всегда получали конечную дату в качестве начальной даты текущих встреч

public  class InfoAppointments : Entity
{         
    public bool Active { get; set; }
    public bool Excluded { get; set; }
    public string Status { get; set; }
    public string Observation{ get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }  
}

EDIT

Мой репозиторий:

public class InfoAppointmentsRepository : Repository<InfoAppointments>, IAppointmentsRepository
{
    public InfoAppointmentsRepository(RveContext rveContext) : base(rveContext)
    {
    }

    public InfoAppointments FindByName(string name)
    {
        return Search(c => c.Name== name).FirstOrDefault();
    }

    public InfoAppointments FindByStatus()
    {
        throw new NotImplementedException();
    }

    public override void Remove(Guid id)
    {
       throw new NotImplementedException();

    }

}

}

1 Ответ

0 голосов
/ 02 января 2019

Существует несколько возможных решений, и это может зависеть от вашего предпочтения добавления такого рода бизнес-логики в код вашего приложения или в SQL (например, в качестве триггера). Я бы лично порекомендовал первое, так как это требование со временем может эволюционировать и повлиять на другие компоненты вашей бизнес-логики.

Я сделал несколько предположений: 1) что вы используете Entity Framework, и 2) назначения не перекрываются, а EndDate уникален. Если это так, вы можете реализовать эту функцию, используя логику, подобную следующей:

public class AppointmentService
{
    private readonly MyContext _db;

    public AppointmentService(MyContext db) => _db = db;

    public void AddAppointment(InfoAppointments appointment)
    {
        // Update the previous appointment's end date
        var previousAppointment = _db.Appointments
            .OrderByDescending(e => e.EndDate)
            .FirstOrDefault();

        if (previousAppointment != null)
        {
            previousAppointment.EndDate = appointment.StartDate;
        }

        // Add the new appointment
        _db.Appointments.Add(appointment);

        _db.SaveChanges();
    }
}

Еще один комментарий: исходя из вашего объяснения, кажется, что EndDate должен по умолчанию иметь значение null, но вы использовали ненулевой тип. Я бы изменил это на следующее:

public DateTime? EndDate { get; set; }  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...