public static void Update(this Spot spot, CreateSpot createSpot) { spot.ExternalCampaignNumber = createSpot.ExternalCampaignNumber; spot.SalesArea = createSpot.SalesArea; spot.GroupCode = createSpot.GroupCode; spot.ExternalSpotRef = createSpot.ExternalSpotRef; spot.StartDateTime = createSpot.StartDateTime; spot.EndDateTime = createSpot.EndDateTime; spot.SpotLength = createSpot.SpotLength; spot.BreakType = createSpot.BreakType; spot.Product = createSpot.Product; spot.Demographic = createSpot.Demographic; spot.ClientPicked = createSpot.ClientPicked; spot.MultipartSpot = createSpot.MultipartSpot; spot.MultipartSpotPosition = createSpot.MultipartSpotPosition; spot.MultipartSpotRef = createSpot.MultipartSpotRef; spot.RequestedPositioninBreak = createSpot.RequestedPositioninBreak; spot.ActualPositioninBreak = createSpot.ActualPositioninBreak; spot.BreakRequest = createSpot.BreakRequest; spot.ExternalBreakNo = createSpot.ExternalBreakNo; spot.Sponsored = createSpot.Sponsored; spot.Preemptable = createSpot.Preemptable; spot.Preemptlevel = createSpot.Preemptlevel; spot.IndustryCode = createSpot.IndustryCode; spot.ClearanceCode = createSpot.ClearanceCode; }
public IHttpActionResult Put(Guid id, [FromBody] CreateSpot spot) { if (id == default(Guid) || !ModelState.IsValid) { return(BadRequest(ModelState)); } var existingSpot = _repository.Find(id); if (existingSpot is null) { return(this.Error().ResourceNotFound("Spot not found")); } try { spot.Validate(); } catch (BreakTypeException ex) { ModelState.AddModelError( nameof(CreateSpot.BreakType), BreakTypeValueErrorMessage(ex) ); return(BadRequest(ModelState)); } existingSpot.Update(spot); _repository.Update(existingSpot); _repository.SaveChanges(); return(Ok(existingSpot)); }
private Break CreateDummyBreak(string externalReference, CreateSpot spot) { return(_fixture.Build <Break>() .With(b => b.ExternalBreakRef, externalReference) .With(b => b.SalesArea, spot.SalesArea) .With(b => b.ScheduledDate, spot.StartDateTime) .Create()); }
public IHttpActionResult Put(string externalId, [FromBody] CreateSpot newSpot) { if (newSpot != null && (string.IsNullOrWhiteSpace(externalId) || externalId != newSpot.ExternalSpotRef)) { ModelState.AddModelError(nameof(Spot.ExternalSpotRef), "External Id does not match"); } if (!ModelState.IsValid) { return(BadRequest(ModelState)); } try { newSpot.Validate(); } catch (BreakTypeException ex) { ModelState.AddModelError( nameof(CreateSpot.BreakType), BreakTypeValueErrorMessage(ex) ); return(BadRequest(ModelState)); } var existingSpot = _repository.FindByExternalSpotRef(externalId); var reviseResult = ReviseAndModifySpotChanges(newSpot, existingSpot); if (!reviseResult.Success) { ModelState.AddModelError(reviseResult.Error.ErrorField, reviseResult.Error.ErrorMessage); return(BadRequest(ModelState)); } if (existingSpot is null) { existingSpot = CreateSpots(new List <CreateSpot> { newSpot }).First(); } else { existingSpot.Update(newSpot); _repository.Update(existingSpot); } // Do not remove this, need to persist changes now so that we can // return model _repository.SaveChanges(); return(Ok(_spotModelCreator.Create(new[] { existingSpot }).FirstOrDefault())); }
/// <summary> /// Method checks Spot ExternalBreakNo/StartDateTime/EndDateTime to validate Spot move to the new Break /// </summary> /// <param name="newSpot" cref="Model.CreateSpot">New entity</param> /// <param name="existingSpot" cref="Spot">Existing entity, used in update mode</param> /// <returns>Returns result with Success flag and optional ErrorModel if there were some errors</returns> private (bool Success, ErrorModel Error) ReviseAndModifySpotChanges(CreateSpot newSpot, Spot existingSpot) { if (newSpot is null) { return(Failed("", "Entity cannot be null.")); } if (newSpot.EndDateTime != default && newSpot.EndDateTime < newSpot.StartDateTime) { return(Failed(nameof(Spot.EndDateTime), "Spot EndDateTime cannot be less than StartDateTime")); } var spotIsMoved = !newSpot.IsUnplaced && (existingSpot == null || existingSpot.ExternalBreakNo != newSpot.ExternalBreakNo || existingSpot.StartDateTime.Date != newSpot.StartDateTime.Date || existingSpot.SalesArea != newSpot.SalesArea); return(spotIsMoved ? TryMoveSpotToDifferentBreak(newSpot) : Success()); }
private (bool Success, ErrorModel Error) TryMoveSpotToDifferentBreak(CreateSpot newSpot) { var newBreak = _breakRepository.FindByExternal(newSpot.ExternalBreakNo).FirstOrDefault(); if (newBreak is null) { return(Failed(nameof(Spot.ExternalBreakNo), $"Break with reference number {newSpot.ExternalBreakNo} could not be found")); } if (newSpot.SalesArea != newBreak.SalesArea) { return(Failed(nameof(Spot.SalesArea), "Spot SalesArea does not match Break SalesArea")); } if (newSpot.StartDateTime.Date != newBreak.ScheduledDate.Date) { return(Failed(nameof(Spot.StartDateTime), "Spot StartDateTime date does not match Break ScheduledDate date")); } return(Success()); }