public SaveNLSResponse SaveNLS(SaveNLSRequest request) { try { if (request.Id == 0) { var nls = request.MapTo <NextLoadingSchedule>(); var vesselSchedule = new VesselSchedule { Id = request.VesselScheduleId }; DataContext.VesselSchedules.Attach(vesselSchedule); nls.VesselSchedule = vesselSchedule; DataContext.NextLoadingSchedules.Add(nls); } else { var nls = DataContext.NextLoadingSchedules.FirstOrDefault(x => x.Id == request.Id); if (nls != null) { request.MapPropertiesToInstance <NextLoadingSchedule>(nls); var vesselSchedule = new VesselSchedule { Id = request.VesselScheduleId }; DataContext.VesselSchedules.Attach(vesselSchedule); nls.VesselSchedule = vesselSchedule; } } DataContext.SaveChanges(); var response = new SaveNLSResponse { IsSuccess = true, Message = "Next Loading Schedule has been saved" }; if (request.DerTransactionDate.HasValue) { var nls = DataContext.NextLoadingSchedules.Where(x => x.VesselSchedule.Id == request.VesselScheduleId && x.CreatedAt <= request.DerTransactionDate) .OrderByDescending(x => x.CreatedAt).FirstOrDefault(); if (nls != null) { response.RemarkDate = nls.CreatedAt.ToString("dd-MM-yyyy"); response.Remark = nls.Remark; } } return(response); } catch (InvalidOperationException e) { return(new SaveNLSResponse { IsSuccess = false, Message = e.Message }); } }
public BaseResponse SaveSchedules(int[] ids, DateTime date) { try { var derLoadingSchedule = DataContext.DerLoadingSchedules.Include(x => x.VesselSchedules).FirstOrDefault(x => x.Period == date); if (derLoadingSchedule != null) { foreach (var schedule in derLoadingSchedule.VesselSchedules.ToList()) { derLoadingSchedule.VesselSchedules.Remove(schedule); } } else { derLoadingSchedule = new DerLoadingSchedule { Period = date }; DataContext.DerLoadingSchedules.Add(derLoadingSchedule); } foreach (var id in ids) { var schedule = DataContext.VesselSchedules.Local.FirstOrDefault(x => x.Id == id); if (schedule == null) { schedule = new VesselSchedule { Id = id }; DataContext.VesselSchedules.Attach(schedule); } derLoadingSchedule.VesselSchedules.Add(schedule); } DataContext.SaveChanges(); return(new BaseResponse { IsSuccess = true, Message = "You have been successfully save choosen schedules" }); } catch (Exception e) { return(new BaseResponse { Message = e.Message }); } }
public SaveNLSResponse SaveNLS(SaveNLSRequest request) { try { if (request.Id == 0) { var nls = request.MapTo <NextLoadingSchedule>(); var vesselSchedule = new VesselSchedule { Id = request.VesselScheduleId }; DataContext.VesselSchedules.Attach(vesselSchedule); nls.VesselSchedule = vesselSchedule; DataContext.NextLoadingSchedules.Add(nls); } else { var nls = DataContext.NextLoadingSchedules.FirstOrDefault(x => x.Id == request.Id); if (nls != null) { request.MapPropertiesToInstance <NextLoadingSchedule>(nls); var vesselSchedule = new VesselSchedule { Id = request.VesselScheduleId }; DataContext.VesselSchedules.Attach(vesselSchedule); nls.VesselSchedule = vesselSchedule; } } DataContext.SaveChanges(); return(new SaveNLSResponse { IsSuccess = true, Message = "Next Loading Schedule has been saved" }); } catch (InvalidOperationException e) { return(new SaveNLSResponse { IsSuccess = false, Message = e.Message }); } }
public DeleteVesselScheduleResponse Delete(DeleteVesselScheduleRequest request) { try { var vesselSchedule = new VesselSchedule { Id = request.Id }; DataContext.VesselSchedules.Attach(vesselSchedule); DataContext.VesselSchedules.Remove(vesselSchedule); DataContext.SaveChanges(); return(new DeleteVesselScheduleResponse { IsSuccess = true, Message = "You have been successfully delete this item" }); } catch (DbUpdateException e) { if (e.InnerException.InnerException.Message.Contains("dbo.NextLoadingSchedules")) { return(new DeleteVesselScheduleResponse { IsSuccess = false, Message = "The vessel schedule is being used by next loading schedule" }); } return(new DeleteVesselScheduleResponse { IsSuccess = false, Message = "An error occured while trying to delete this item" }); } catch (InvalidOperationException e) { return(new DeleteVesselScheduleResponse { IsSuccess = false, Message = "An error occured while trying to delete this item" }); } }
public async Task <ActionResult <VesselSchedule> > Post(VesselSchedule vesselSchedule) { string eMail = string.Empty; using (Utility util = new Utility()) { eMail = util.GetEmailclaim(User.Identity as ClaimsIdentity); } if (vesselSchedule.Id > 0) { vesselSchedule.UpdatedBy = eMail; vesselSchedule.Details.ForEach(i => i.UpdatedBy = eMail); await _repository.UpdateAsync <VesselSchedule>(vesselSchedule); } else { vesselSchedule.CreatedBy = eMail; vesselSchedule.Details.ForEach(i => i.CreatedBy = eMail); await _repository.AddAsync <VesselSchedule>(vesselSchedule); } return(await GetVesselSchedules(vesselSchedule.Id)); }
public IEnumerable <VesselRoute> BuildVesselRoutesEntitites(VesselSchedule schedule) { List <VesselRoute> finalList = new List <VesselRoute>(); finalList.Add(new VesselRoute() { DestinationPortId = schedule.DestinationPortId, OriginPortId = schedule.OriginPortId, StartDate = schedule.EstDepDate, OriginPort = schedule.OriginPort, DestinationPort = schedule.DestinationPort, EndDate = schedule.EstArrDestDate, Schedule = schedule, }); if (schedule.Details != null) { //source -origin and trasits as Destination X partner x Package var isDeleiveryAvailableList = schedule.Details.FindAll(x => x.IsDeliveryAvailable == true).ToList <ScheduleDetail>(); foreach (ScheduleDetail detail in isDeleiveryAvailableList) { VesselRoute route = new VesselRoute() { StartDate = schedule.EstDepDate, EndDate = detail.ExpArrival, DestinationPortId = detail.TransitPortId, OriginPortId = schedule.OriginPortId, OriginPort = schedule.OriginPort, DestinationPort = detail.TransitPort, Schedule = schedule, }; finalList.Add(route); } var isLoadingAvailable = schedule.Details.FindAll(x => x.IsLoadingAvailable == true).ToList <ScheduleDetail>(); foreach (ScheduleDetail detail in isLoadingAvailable) { VesselRoute route = new VesselRoute() { StartDate = detail.ExpDeparture, EndDate = schedule.EstArrDestDate, OriginPort = detail.TransitPort, DestinationPort = schedule.DestinationPort, DestinationPortId = schedule.DestinationPortId, OriginPortId = detail.TransitPortId, Schedule = schedule, }; finalList.Add(route); } foreach (ScheduleDetail source in isLoadingAvailable)//this becomes source { foreach (ScheduleDetail destination in isDeleiveryAvailableList) { if (source.Id != destination.Id && source.ExpArrival < destination.ExpArrival) { VesselRoute route = new VesselRoute() { StartDate = source.ExpDeparture, EndDate = destination.ExpArrival, OriginPort = source.TransitPort, DestinationPort = destination.TransitPort, DestinationPortId = destination.TransitPortId, OriginPortId = source.TransitPortId, Schedule = schedule, }; finalList.Add(route); } } } } return(finalList); }
/// <summary> /// For Admin /// </summary> /// <param name="schedule"></param> /// <param name="currencyCode"></param> /// <returns></returns> public List <VesselCharge> BuildVesselChargeEntitites(VesselSchedule schedule, string currencyCode) { List <VesselCharge> finalList = new List <VesselCharge>(); int currencyId = 1; var currency = _repository.FindSingle <Currency>(x => x.CurrencyCode == currencyCode); currencyId = currency == null ? 1 : currency.Id; int chargedAtId = 1; var chargedAt = _repository.FindSingle <ChargedAt>(x => x.Name == "ORIGIN"); chargedAtId = chargedAt == null ? 1 : chargedAt.Id; var pckList = _repository.ListAllAsyncWhere <Package>(x => x.IsActive == true).Result; var partnerList = _repository.ListAllAsyncWhere <Partner>(x => x.IsActive == true && x.PartnerName != "ADMIN").Result; //Source and DEstination x Partner X Package foreach (Package pck in pckList) { foreach (Partner prtner in partnerList) { VesselCharge charge = new VesselCharge() { ChargedAtId = chargedAtId, ChargeAmount = 200, ChargeDetail = "STD", PackageId = pck.Id, CurrencyId = currencyId, StartDate = schedule.EstDepDate, EndDate = schedule.EstArrDestDate, CreatedBy = "senthil", CreatedAt = new DateTime(), DestinationPortId = schedule.DestinationPortId, OriginPortId = schedule.OriginPortId, PartnerId = prtner.Id, IsActive = false, VesselScheduleId = schedule.Id, ChargeType = "chargeType", UpdatedAt = new DateTime(), UpdatedBy = "senthil", VesselSchedule = schedule, Package = pck, Partner = prtner, Currency = currency, DestinationPort = schedule.DestinationPort, OriginPort = schedule.OriginPort, ChargedAt = chargedAt, }; finalList.Add(charge); } } if (schedule.Details != null) { //source -origin and trasits as Destination X partner x Package var isDeleiveryAvailableList = schedule.Details.FindAll(x => x.IsDeliveryAvailable == true).ToList <ScheduleDetail>(); foreach (ScheduleDetail detail in isDeleiveryAvailableList) { foreach (Package pck in pckList) { foreach (Partner prtner in partnerList) { VesselCharge charge = new VesselCharge() { ChargedAtId = chargedAtId, ChargeAmount = 200, ChargeDetail = "STD", PackageId = pck.Id, CurrencyId = 1, StartDate = schedule.EstDepDate, EndDate = detail.ExpArrival, CreatedBy = "senthil", CreatedAt = new DateTime(), DestinationPortId = detail.TransitPortId, OriginPortId = schedule.OriginPortId, PartnerId = prtner.Id, IsActive = false, VesselScheduleId = schedule.Id, ChargeType = "chargeType", UpdatedAt = new DateTime(), UpdatedBy = "senthil", VesselSchedule = schedule, Package = pck, Partner = prtner, Currency = currency, DestinationPort = detail.TransitPort, OriginPort = schedule.OriginPort, ChargedAt = chargedAt }; finalList.Add(charge); } } } //source from transit and Destination x partner x package var isLoadingAvailable = schedule.Details.FindAll(x => x.IsLoadingAvailable == true).ToList <ScheduleDetail>(); foreach (ScheduleDetail detail in isLoadingAvailable) { foreach (Package pck in pckList) { foreach (Partner prtner in partnerList) { VesselCharge charge = new VesselCharge() { ChargedAtId = chargedAtId, ChargeAmount = 200, ChargeDetail = "STD", PackageId = pck.Id, CurrencyId = 1, CreatedBy = "senthil", StartDate = detail.ExpDeparture, EndDate = schedule.EstArrDestDate, CreatedAt = new DateTime(), DestinationPortId = schedule.DestinationPortId, OriginPortId = detail.TransitPortId, PartnerId = prtner.Id, IsActive = false, VesselScheduleId = schedule.Id, ChargeType = "chargeType", UpdatedAt = new DateTime(), UpdatedBy = "senthil", VesselSchedule = schedule, Package = pck, Partner = prtner, Currency = currency, DestinationPort = schedule.DestinationPort, OriginPort = detail.TransitPort, ChargedAt = chargedAt, }; finalList.Add(charge); } } } //transit 1 as source and transit 2...n as Destinaition x partner x package foreach (ScheduleDetail source in isLoadingAvailable)//this becomes source { foreach (ScheduleDetail destination in isDeleiveryAvailableList) { if (source.Id != destination.Id && source.ExpArrival < destination.ExpArrival) { foreach (Package pck in pckList) { foreach (Partner prtner in partnerList) { VesselCharge charge = new VesselCharge() { ChargedAtId = chargedAtId, ChargeAmount = 200, ChargeDetail = "STD", PackageId = pck.Id, CurrencyId = 1, StartDate = source.ExpDeparture, EndDate = destination.ExpArrival, CreatedBy = "senthil", CreatedAt = new DateTime(), DestinationPortId = destination.TransitPortId, OriginPortId = source.TransitPortId, PartnerId = prtner.Id, IsActive = false, VesselScheduleId = schedule.Id, ChargeType = "chargeType", UpdatedAt = new DateTime(), UpdatedBy = "senthil", VesselSchedule = schedule, Package = pck, Partner = prtner, Currency = currency, DestinationPort = destination.TransitPort, // _repository.FindSingle<Port>(x => x.Id == destination.TransitPortId), OriginPort = source.TransitPort, // _repository.FindSingle<Port>(x => x.Id == source.TransitPortId), ChargedAt = chargedAt, }; finalList.Add(charge); } } } } } } return(finalList); }